Remove recursion detection

This commit is contained in:
Tom Christie 2012-10-28 20:50:14 +00:00
parent 351382fe35
commit de6908fbef

View File

@ -23,10 +23,6 @@ class SortedDictWithMetadata(SortedDict, DictWithMetadata):
pass pass
class RecursionOccured(BaseException):
pass
def _is_protected_type(obj): def _is_protected_type(obj):
""" """
True if the object is a native datatype that does not need to True if the object is a native datatype that does not need to
@ -93,7 +89,6 @@ class BaseSerializer(Field):
self.parent = None self.parent = None
self.root = None self.root = None
self.stack = []
self.context = context or {} self.context = context or {}
self.init_data = data self.init_data = data
@ -152,10 +147,9 @@ class BaseSerializer(Field):
def initialize(self, parent): def initialize(self, parent):
""" """
Same behaviour as usual Field, except that we need to keep track Same behaviour as usual Field, except that we need to keep track
of state so that we can deal with handling maximum depth and recursion. of state so that we can deal with handling maximum depth.
""" """
super(BaseSerializer, self).initialize(parent) super(BaseSerializer, self).initialize(parent)
self.stack = parent.stack[:]
if parent.opts.depth: if parent.opts.depth:
self.opts.depth = parent.opts.depth - 1 self.opts.depth = parent.opts.depth - 1
@ -173,10 +167,6 @@ class BaseSerializer(Field):
Core of serialization. Core of serialization.
Convert an object into a dictionary of serialized field values. Convert an object into a dictionary of serialized field values.
""" """
if obj in self.stack and not self.source == '*':
raise RecursionOccured()
self.stack.append(obj)
ret = self._dict_class() ret = self._dict_class()
ret.fields = {} ret.fields = {}