Fix _serializer pickle bugs

master
Cristi Vijdea 2019-03-03 17:23:04 +02:00
parent e108ddbb48
commit 62d97a80bc
2 changed files with 4 additions and 3 deletions

View File

@ -122,7 +122,7 @@ class InlineSerializerInspector(SerializerInspector):
# it is better to just remove title from inline models # it is better to just remove title from inline models
del result.title del result.title
setattr(result, '_serializer', serializer) setattr(result, '_NP_serializer', get_serializer_class(serializer))
return result return result
if not ref_name or not use_references: if not ref_name or not use_references:
@ -132,7 +132,7 @@ class InlineSerializerInspector(SerializerInspector):
actual_schema = definitions.setdefault(ref_name, make_schema_definition) actual_schema = definitions.setdefault(ref_name, make_schema_definition)
actual_schema._remove_read_only() actual_schema._remove_read_only()
actual_serializer = get_serializer_class(getattr(actual_schema, '_serializer', None)) actual_serializer = getattr(actual_schema, '_NP_serializer', None)
this_serializer = get_serializer_class(field) this_serializer = get_serializer_class(field)
if actual_serializer and actual_serializer != this_serializer: # pragma: no cover if actual_serializer and actual_serializer != this_serializer: # pragma: no cover
explicit_refs = self._has_ref_name(actual_serializer) and self._has_ref_name(this_serializer) explicit_refs = self._has_ref_name(actual_serializer) and self._has_ref_name(this_serializer)

View File

@ -167,7 +167,8 @@ class SwaggerDict(OrderedDict):
def __reduce__(self): def __reduce__(self):
# for pickle supprt; this skips calls to all SwaggerDict __init__ methods and relies # for pickle supprt; this skips calls to all SwaggerDict __init__ methods and relies
# on the already set attributes instead # on the already set attributes instead
return _bare_SwaggerDict, (type(self),), vars(self), None, iter(self.items()) attrs = {k: v for k ,v in vars(self).items() if not k.startswith('_NP_')}
return _bare_SwaggerDict, (type(self),), attrs, None, iter(self.items())
class Contact(SwaggerDict): class Contact(SwaggerDict):