          Given a stream to read from, return the deserialized output.
          Should return parsed data, or a DataAndFiles object consisting of the
          parsed data and files.
          """
          raise NotImplementedError(".parse_stream() must be overridden.")
  
  
  class JSONParser(BaseParser):
      """
      Parses JSON-serialized data.
 
</s> remove     def parse(self, string_or_stream, parser_context=None):
        """
        The main entry point to parsers.  This is a light wrapper around
        `parse_stream`, that instead handles both string and stream objects.
        """
        if isinstance(string_or_stream, basestring):
            stream = BytesIO(string_or_stream)
        else:
            stream = string_or_stream
        return self.parse_stream(stream, parser_context)

    def parse_stream(self, stream, parser_context=None):
 </s> add     def parse(self, stream, parser_context=None): </s> remove         Returns a dict that is passed through to Parser.parse_stream(),
 </s> add         Returns a dict that is passed through to Parser.parse(), </s> remove     def parse_stream(self, stream, parser_context=None):
 </s> add     def parse(self, stream, parser_context=None): </s> remove     def parse_stream(self, stream, parser_context=None):
 </s> add     def parse(self, stream, parser_context=None): </s> remove     def parse_stream(self, stream, parser_context=None):
 </s> add     def parse(self, stream, parser_context=None):
        raise NotImplementedError(".parse() must be overridden.")
          Given a stream to read from, return the deserialized output.
          Should return parsed data, or a DataAndFiles object consisting of the
          parsed data and files.
          """
        raise NotImplementedError(".parse() must be overridden.")
  
  
  class JSONParser(BaseParser):
      """
      Parses JSON-serialized data.
keep keep keep keep replace keep keep keep keep keep
 Drop .parse_string_or_stream() - keep API minimal. 
rest_framework/parsers.py