diff --git a/drf_spectacular/renderers.py b/drf_spectacular/renderers.py index 949331b7..2185b504 100644 --- a/drf_spectacular/renderers.py +++ b/drf_spectacular/renderers.py @@ -15,7 +15,7 @@ class OpenApiYamlRenderer(BaseRenderer): def render(self, data, accepted_media_type=None, renderer_context=None): # disable yaml advanced feature 'alias' for clean, portable, and readable output - class Dumper(yaml.SafeDumper): + class Dumper(yaml.CSafeDumper): def ignore_aliases(self, data): return True @@ -51,7 +51,9 @@ def uuid_representer(dumper, data): Dumper.add_representer(UUID, uuid_representer) def safestring_representer(dumper, data): - return dumper.represent_str(data) + # CSafeDumper needs actually a str instance, not a SafeString one. + # str(SafeString()) still returns SafeString. + return dumper.represent_str(super(SafeString, data).__str__()) Dumper.add_representer(SafeString, safestring_representer) def ordereddict_representer(dumper, data):