File: renderers.py

package info (click to toggle)
python-djangorestframework-yaml 3.0.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 268 kB
  • sloc: python: 483; makefile: 11
file content (40 lines) | stat: -rw-r--r-- 1,044 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""Provides YAML rendering support."""

from typing import Any, Mapping, Optional

import yaml
from rest_framework.renderers import BaseRenderer

from .encoders import SafeDumper


class YAMLRenderer(BaseRenderer):
    """Renderer which serializes to YAML."""

    media_type = "application/yaml"
    format = "yaml"
    encoder = SafeDumper
    charset = "utf-8"
    ensure_ascii = False
    default_flow_style = False
    sort_keys = False

    def render(
        self,
        data: Any,
        _accepted_media_type: Optional[str] = None,
        _renderer_context: Optional[Mapping[str, Any]] = None,
    ) -> bytes:
        """Render `data` into serialized YAML."""
        if data is None:
            return b""

        return yaml.dump(  # type: ignore [no-any-return]
            data,
            sort_keys=self.sort_keys,
            stream=None,
            encoding=self.charset,
            Dumper=self.encoder,
            allow_unicode=not self.ensure_ascii,
            default_flow_style=self.default_flow_style,
        )