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
« 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
5from rest_framework.renderers import BaseRenderer, JSONRenderer
6from rest_framework_csv.renderers import CSVRenderer
9class OpenMetricsRenderer(BaseRenderer):
10 media_type = "application/openmetrics-text"
11 format = "openmetrics"
12 charset = "utf-8"
13 render_style = "text"
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}')
28 result.append("# EOF")
29 return "\n".join(result)
32class FlatBaseRenderer(BaseRenderer):
33 results_field = "results"
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)
41class AutoCSVRenderer(FlatBaseRenderer, CSVRenderer):
42 """Automatically expand paginated results."""
45class FlatJsonRenderer(FlatBaseRenderer, JSONRenderer):
46 format = "json-flat"