Coverage for app/venv/lib/python3.14/site-packages/weblate/api/renderers.py: 98%

28 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 

5from rest_framework.renderers import BaseRenderer, JSONRenderer 

6from rest_framework_csv.renderers import CSVRenderer 

7 

8 

9class OpenMetricsRenderer(BaseRenderer): 

10 media_type = "application/openmetrics-text" 

11 format = "openmetrics" 

12 charset = "utf-8" 

13 render_style = "text" 

14 

15 def render(self, data, accepted_media_type=None, renderer_context=None): 

16 result = [] 

17 for key, value in data.items(): 

18 if isinstance(value, str): 

19 # Strings not supported 

20 continue 

21 if isinstance(value, (int, float)): 

22 result.append(f"{key} {value}") 

23 elif isinstance(value, dict): 23 ↛ 17line 23 didn't jump to line 17 because the condition on line 23 was always true

24 # Celery queues 

25 for queue, stat in value.items(): 

26 result.append(f'{key}{{queue="{queue}"}} {stat}') 

27 

28 result.append("# EOF") 

29 return "\n".join(result) 

30 

31 

32class FlatBaseRenderer(BaseRenderer): 

33 results_field = "results" 

34 

35 def render(self, data, *args, **kwargs): 

36 if isinstance(data, dict) and self.results_field in data: 

37 data = data[self.results_field] 

38 return super().render(data, *args, **kwargs) 

39 

40 

41class AutoCSVRenderer(FlatBaseRenderer, CSVRenderer): 

42 """Automatically expand paginated results.""" 

43 

44 

45class FlatJsonRenderer(FlatBaseRenderer, JSONRenderer): 

46 format = "json-flat"