jpadilla / django-rest-framework-yaml

YAML support for Django REST Framework
http://jpadilla.github.io/django-rest-framework-yaml
BSD 3-Clause "New" or "Revised" License
31 stars 18 forks source link

TypeError: '<' not supported between instances of 'NoneType' and 'str' #18

Open K-MTG opened 1 year ago

K-MTG commented 1 year ago

The sort https://github.com/jpadilla/django-rest-framework-yaml/blob/2e0e219e489984f82c0bad458e0b7174aec110c9/rest_framework_yaml/encoders.py#L42 results in the following exception if the dictionary contains a string and null type (which is still valid yaml)

Traceback (most recent call last):
  File ".../venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File ".../venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 220, in _get_response
    response = response.render()
  File ".../venv/lib/python3.10/site-packages/django/template/response.py", line 114, in render
    self.content = self.rendered_content
  File ".../venv/lib/python3.10/site-packages/rest_framework/response.py", line 70, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
  File ".../venv/lib/python3.10/site-packages/rest_framework_yaml/renderers.py", line 33, in render
    return yaml.dump(
  File ".../venv/lib/python3.10/site-packages/yaml/__init__.py", line 253, in dump
    return dump_all([data], stream, Dumper=Dumper, **kwds)
  File ".../venv/lib/python3.10/site-packages/yaml/__init__.py", line 241, in dump_all
    dumper.represent(data)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 27, in represent
    node = self.represent_data(data)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 48, in represent_data
    node = self.yaml_representers[data_types[0]](self, data)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 207, in represent_dict
    return self.represent_mapping('tag:yaml.org,2002:map', data)
  File ".../venv/lib/python3.10/site-packages/rest_framework_yaml/encoders.py", line 46, in represent_mapping
    node_value = self.represent_data(item_value)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 48, in represent_data
    node = self.yaml_representers[data_types[0]](self, data)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 207, in represent_dict
    return self.represent_mapping('tag:yaml.org,2002:map', data)
  File ".../venv/lib/python3.10/site-packages/rest_framework_yaml/encoders.py", line 46, in represent_mapping
    node_value = self.represent_data(item_value)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 48, in represent_data
    node = self.yaml_representers[data_types[0]](self, data)
  File ".../venv/lib/python3.10/site-packages/yaml/representer.py", line 207, in represent_dict
    return self.represent_mapping('tag:yaml.org,2002:map', data)
  File ".../venv/lib/python3.10/site-packages/rest_framework_yaml/encoders.py", line 43, in represent_mapping
    mapping.sort()
TypeError: '<' not supported between instances of 'NoneType' and 'str'