diff options
| author | José Padilla | 2014-11-29 14:43:05 -0400 | 
|---|---|---|
| committer | José Padilla | 2014-11-29 14:43:05 -0400 | 
| commit | 731c8421afe3093a78cdabb9c3cc28fa52cd1c8e (patch) | |
| tree | bcbcfcfb32d0ab0e59605a5564cf320913767d6d /rest_framework | |
| parent | 3a5b3772fefc3c2f2c0899947cbc07bfe6e6b5d2 (diff) | |
| download | django-rest-framework-731c8421afe3093a78cdabb9c3cc28fa52cd1c8e.tar.bz2 | |
Remove YAML support from core
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/compat.py | 7 | ||||
| -rw-r--r-- | rest_framework/parsers.py | 25 | ||||
| -rw-r--r-- | rest_framework/renderers.py | 25 | ||||
| -rw-r--r-- | rest_framework/settings.py | 4 | ||||
| -rw-r--r-- | rest_framework/utils/encoders.py | 65 | 
5 files changed, 5 insertions, 121 deletions
| diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 5bd85e74..52db9625 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -237,13 +237,6 @@ except ImportError:      apply_markdown = None -# Yaml is optional -try: -    import yaml -except ImportError: -    yaml = None - -  # XML is optional  try:      import defusedxml.ElementTree as etree diff --git a/rest_framework/parsers.py b/rest_framework/parsers.py index ccb82f03..e6bb75f6 100644 --- a/rest_framework/parsers.py +++ b/rest_framework/parsers.py @@ -12,7 +12,7 @@ from django.http import QueryDict  from django.http.multipartparser import MultiPartParser as DjangoMultiPartParser  from django.http.multipartparser import MultiPartParserError, parse_header, ChunkIter  from django.utils import six -from rest_framework.compat import etree, yaml, force_text, urlparse +from rest_framework.compat import etree, force_text, urlparse  from rest_framework.exceptions import ParseError  from rest_framework import renderers  import json @@ -65,29 +65,6 @@ class JSONParser(BaseParser):              raise ParseError('JSON parse error - %s' % six.text_type(exc)) -class YAMLParser(BaseParser): -    """ -    Parses YAML-serialized data. -    """ - -    media_type = 'application/yaml' - -    def parse(self, stream, media_type=None, parser_context=None): -        """ -        Parses the incoming bytestream as YAML and returns the resulting data. -        """ -        assert yaml, 'YAMLParser requires pyyaml to be installed' - -        parser_context = parser_context or {} -        encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET) - -        try: -            data = stream.read().decode(encoding) -            return yaml.safe_load(data) -        except (ValueError, yaml.parser.ParserError) as exc: -            raise ParseError('YAML parse error - %s' % six.text_type(exc)) - -  class FormParser(BaseParser):      """      Parser for form data. diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index e87d16d0..a6e4f1bb 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -19,7 +19,7 @@ from django.utils import six  from django.utils.xmlutils import SimplerXMLGenerator  from rest_framework import exceptions, serializers, status, VERSION  from rest_framework.compat import ( -    SHORT_SEPARATORS, LONG_SEPARATORS, StringIO, smart_text, yaml +    SHORT_SEPARATORS, LONG_SEPARATORS, StringIO, smart_text  )  from rest_framework.exceptions import ParseError  from rest_framework.settings import api_settings @@ -189,29 +189,6 @@ class XMLRenderer(BaseRenderer):              xml.characters(smart_text(data)) -class YAMLRenderer(BaseRenderer): -    """ -    Renderer which serializes to YAML. -    """ - -    media_type = 'application/yaml' -    format = 'yaml' -    encoder = encoders.SafeDumper -    charset = 'utf-8' -    ensure_ascii = False - -    def render(self, data, accepted_media_type=None, renderer_context=None): -        """ -        Renders `data` into serialized YAML. -        """ -        assert yaml, 'YAMLRenderer requires pyyaml to be installed' - -        if data is None: -            return '' - -        return yaml.dump(data, stream=None, encoding=self.charset, Dumper=self.encoder, allow_unicode=not self.ensure_ascii) - -  class TemplateHTMLRenderer(BaseRenderer):      """      An HTML renderer for use with templates. diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 1e8c27fc..3abc1fe8 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -5,11 +5,11 @@ For example your project's `settings.py` file might look like this:  REST_FRAMEWORK = {      'DEFAULT_RENDERER_CLASSES': (          'rest_framework.renderers.JSONRenderer', -        'rest_framework.renderers.YAMLRenderer', +        'rest_framework.renderers.TemplateHTMLRenderer',      )      'DEFAULT_PARSER_CLASSES': (          'rest_framework.parsers.JSONParser', -        'rest_framework.parsers.YAMLParser', +        'rest_framework.parsers.TemplateHTMLRenderer',      )  } diff --git a/rest_framework/utils/encoders.py b/rest_framework/utils/encoders.py index 4d6bb3a3..2c97f1d7 100644 --- a/rest_framework/utils/encoders.py +++ b/rest_framework/utils/encoders.py @@ -5,10 +5,9 @@ from __future__ import unicode_literals  from django.db.models.query import QuerySet  from django.utils import six, timezone  from django.utils.functional import Promise -from rest_framework.compat import force_text, OrderedDict +from rest_framework.compat import force_text  import datetime  import decimal -import types  import json @@ -56,65 +55,3 @@ class JSONEncoder(json.JSONEncoder):          elif hasattr(obj, '__iter__'):              return tuple(item for item in obj)          return super(JSONEncoder, self).default(obj) - - -try: -    import yaml -except ImportError: -    SafeDumper = None -else: -    # Adapted from http://pyyaml.org/attachment/ticket/161/use_ordered_dict.py -    class SafeDumper(yaml.SafeDumper): -        """ -        Handles decimals as strings. -        Handles OrderedDicts as usual dicts, but preserves field order, rather -        than the usual behaviour of sorting the keys. -        """ -        def represent_decimal(self, data): -            return self.represent_scalar('tag:yaml.org,2002:str', six.text_type(data)) - -        def represent_mapping(self, tag, mapping, flow_style=None): -            value = [] -            node = yaml.MappingNode(tag, value, flow_style=flow_style) -            if self.alias_key is not None: -                self.represented_objects[self.alias_key] = node -            best_style = True -            if hasattr(mapping, 'items'): -                mapping = list(mapping.items()) -                if not isinstance(mapping, OrderedDict): -                    mapping.sort() -            for item_key, item_value in mapping: -                node_key = self.represent_data(item_key) -                node_value = self.represent_data(item_value) -                if not (isinstance(node_key, yaml.ScalarNode) and not node_key.style): -                    best_style = False -                if not (isinstance(node_value, yaml.ScalarNode) and not node_value.style): -                    best_style = False -                value.append((node_key, node_value)) -            if flow_style is None: -                if self.default_flow_style is not None: -                    node.flow_style = self.default_flow_style -                else: -                    node.flow_style = best_style -            return node - -    SafeDumper.add_representer( -        decimal.Decimal, -        SafeDumper.represent_decimal -    ) -    SafeDumper.add_representer( -        OrderedDict, -        yaml.representer.SafeRepresenter.represent_dict -    ) -    # SafeDumper.add_representer( -    #     DictWithMetadata, -    #     yaml.representer.SafeRepresenter.represent_dict -    # ) -    # SafeDumper.add_representer( -    #     OrderedDictWithMetadata, -    #     yaml.representer.SafeRepresenter.represent_dict -    # ) -    SafeDumper.add_representer( -        types.GeneratorType, -        yaml.representer.SafeRepresenter.represent_list -    ) | 
