utils: initialize converter when creating XMLSchema (#39818)

Also implement Converter.copy() as XMLSchema.__init__ copy
the given converter.
This commit is contained in:
Benjamin Dauvergne 2020-02-13 13:49:05 +01:00
parent 823b366ce2
commit fabe3b9d98
1 changed files with 7 additions and 1 deletions

View File

@ -94,6 +94,12 @@ class TransformConverter(xmlschema.UnorderedConverter):
self.transformer = kwargs.pop('transformer', None)
super(TransformConverter, self).__init__(*args, **kwargs)
def copy(self, **kwargs):
transformer = kwargs.pop('transformer', self.transformer)
new = super(TransformConverter, self).copy(**kwargs)
new.transformer = transformer
return new
def element_decode(self, data, xsd_element, level=0):
if self.transformer:
if xsd_element.type.name in getattr(self.transformer, 'type_map', {}):
@ -126,7 +132,7 @@ class JSONSchemaFromXMLSchema(object):
def __init__(self, xml_schema, root_element):
if not isinstance(xml_schema, xmlschema.XMLSchema):
xml_schema = xmlschema.XMLSchema(xml_schema)
xml_schema = xmlschema.XMLSchema(xml_schema, converter=TransformConverter(transformer=self))
self.xml_schema = xml_schema
self.root_element = root_element
self.json_schema = {