Changelog#
22.9 (2022-08-24)#
22.8 (2022-08-21)#
22.7 (2022-07-22)#
Fix empty lists do not get serialized #686
Added external DTD code generator #688
Added support for python 3.11
In the next release we will drop python 3.6 support!!!
22.5 (2022-05-08)#
Added support for xml date/time nanoseconds #679
22.4 (2022-04-10)#
Added config option to unnest classes
Added new class meta option global_type, to hide classes from discovery
Removed min/max length restrictions for enum type fields
Allow builtin xml types to be fully extended #672
22.3 (2022-03-20)#
Added official support for python 3.11
Fixed enumerations restricting complex types #659
Fixed attribute name duplicate check to avoid invalid slugs
22.2 (2022-02-06)#
22.1 (2022-01-23)#
21.12 (2021-12-05)#
Fixed wsdl generator to use operation name for rpc input messages #609
Fixed wsdl generator to check for qualified elements for message part types #612
Fixed compound field matcher to prefer exact types over derived #617
Added async to the reserved keywords #600
Added generator config for search & replace substitutions #624
Updated code generator to remove abstract elements from class attrs #627
Updated code generator to filter out all unused types #629
21.11 (2021-11-02)#
21.9 (2021-09-04)#
Automate cli generate options #578
Generate cli options by the config model
Allow to enable/disable any flag
Allow to bypass any value from the config
Removed -cf/-ri as we can’t have switches with short names
Fixed generator not cascading default values to inner classes #579
Re-raise xml syntax errors as xsdata.exceptions.ParserError #571
Added cli summary with recovered warnings and issues #583
Removed the native and lxml SAX handlers #582
21.8 (2021-08-03)#
Deprecated JsonSerializer indent property, use SerializerConfig instead
Fixed SchemaMapper assigning wrong namespace for imported unqualified elements
Fixed AttributeTypeHandler to maintain occurs between any flattening
Fixed missing required field metadata property
Fixed nillable fields not being marked as optional
Fixed fields ordering during class reduce process (Codegen from xml/json)
Added support for xs:defaultOpenContent:appliesToEmpty attribute
Added ParserConfig class factory option #549
Added SerializerConfig option to ignore optional default attributes #555
Added warning on unexpected duplicate types #564
Added GeneratorConfig support for kw_only and slots for python >= 3.10
Added structure style namespace-clusters #573
Updated text fields default value to empty string and marked as required #570
Updated fields derived from xs:substitutionGroups to optional
Updated fields derived from xs:any to optional
Updated AttributeDefaultValueHandler to preserve acceptable default values
Updated AttributeDefaultValueHandler to mark as optional any xsi:type attribute
Updated xs:alternative handling to resemble xs:choice
Updated mixed content handler to group all elements under wildcard
Updated ElementMapper to detect nillable types
Updated DictMapper to generate list of xs:anySimpleType for empty list nodes
Updated the compatibility layer for dataclass style plugins
Updated namespaces structure style to convert namespaces similar to jaxb
http://www.w3.org/XML/1998/namespace to org.w3.XML.1998.namespace
Update binding process for nillable types and fields
nillable types can be initialized
nillable fields are initialized with None values
21.7 (2021-07-01)#
Fixed docstrings backslash escaping #518
Fixed analyzer flattening bare types #541
Fixed multiple issues with compound fields and override fields #533
Fixed missing derived elements types during xml parsing #541
Added structure style: clusters for smaller packages #509
Added configuration to generate relative imports #519
Added configuration to toggle all dataclasses features #529
Added binding support for tuple typing annotations (frozen dataclasses) #529
Added support to bind data directly from xml/lxml Element and ElementTree #531 #546
Updated analyzer to avoid same name for outer-inner classes #511
Updated cli to fail early if config file is invalid #514
Updated cli to remove setuptools from runtime dependencies #515
Updated analyzer to relax override field validations completely #516
Updated analyzer to sort classes before class name conflict resolution #517
Updated JSON parser to attempt binding against subclasses #527
Updated analyzer to guard against multiple substitution group runs #538
Updated code generation to use case sensitive reserved words #545
21.6 (2021-06-01)#
Fixed no args Dict annotation, raising an exception #494
Fixed original name case not working for field names #498
Fixed element type resolution with duplicate name conflicts #503
Added handler to flatten bare inner classes
Added the ability for custom types to subclass named tuples
Added keyword meta in the reserved words #491
Added new xml type Ignore to skip fields during binding #504
Updated generic model DerivedElement.substituted flag with xsi:type
Updated core components to improve binding performance
Converted almost all internal dataclasses to simple objects with __slots__
Converted the internal xml date/time types to named tuples
Reduced models metadata lookup times and memory footprint
Updated JSON parser #495
Support failing on unknown properties
Support required properties
Support parser config
Stricter binding process
Enhance DerivedElement support
Moved Definitive XML Schema tests to the samples repository
21.5 (2021-05-07)#
Added output structure style single-package #469
Added support for marshalling array of objects for json #448
Added support to generate code from raw json documents #445
Added docstring style Blank to avoid generating them #460
Added validations for non supported type hints
Added support for python 3.10
Generate package __all__ lists #459
Generate factory for xs:list enumeration default values #471
Avoid generating prohibited elements with maxOccurs==0 #478
Avoid generating identical overriding fields #466
Fixed flattening base classes if they are also subclasses #473
Fixed unchecked class name conflict resolution #457
Refactored context components to improve binding performance #476
21.4 (2021-04-02)#
Split requirements to extras cli, soap and lxml #419
Fixed parser conflict when an attribute and element field have the same qualified name
Added cli auto detection for source types, removed cli flag –wsdl
Added cli support to generate code from raw xml documents
Added cli entry point to allow pluggable output formats #429
Added cli short flags for all options and flags
Added handler to set effective choice groups #433
Moved plantUML output format to a standalone plugin
Updated xml parser to allow unions of primitive and class types
Updated XmlDateTime parser to catch invalid cases with extra leading zeros
Updated QName converter to validate uri/ncname when parsing string representations
Updated JsonParser to allow parsing from filename string
Updated cli option –compound-fields to a boolean flag
21.3 (2021-03-04)#
Added constant name convention config #407
Added naming schemes screaming snake case and original case
Updated xsi:lookup on xs:any derived elements #315
Updated fields restriction inheritance #417
Updated cli to allow package override from arguments #416
Updated code generation to merge duplicate global types earlier #406
Fixed docstrings issue breaking python syntax #403
Fixed bindings for nillable content without workarounds #408
Fixed resolver to apply aliases on extensions and choice fields #414
Fixed schema models limiting xs:appinfo occurrences #420
Decoupled core systems from click and lxml
Notice: In the next release installation profiles will be introduced that will turn the cli, lxml and soap features optional.
21.2 (2021-02-02)#
Added class name context for user naming schemes #348
Added mixed pascal naming scheme #348
Added access to element/attribute name generators #381
Added XmlHexBinary/XmlBase64Binary builtin data types #387
Added support for xs:anyType root elements #399
Updated JSON binding modules to use the fields local name #389
Updated parsers accuracy for Union types
Updated dependency resolution accuracy
Update base classes generation strategies
Updated builtin data types with helper constructors/methods
Fixed inner class names conflicts #375
Fixed issue not generating fields derived from xs:alternative elements #393
Fixed duplicate root class name regression from v20.12
Fixed issue adding unused lib imports
Fixed issue adding unused name properties to choice elements
This is a sleeper release ✨✨✨ so many code generation improvements and finally the JSON binding is aligned with XML.
21.1 (2021-01-08)#
Fixed XmlWriter converting attribute keys to QName. #346
Set empty complexType base to anySimpleType #349
Improve duplicate attr names detection #351
Add SerializerConfig::xml_declaration option #357
Generate default value/factory for compound fields #359
Fixed default value for token fields #360
Add doc metadata for compound fields #362
JsonParser: handle class and primitive unions #369
- Update python mappings #366
Map xs:hexBinary and xs:base64Binary to bytes
Map xs:date/time types to builtin types XmlDate/Time
Map xs:duration to builtin type XmlDuration
Map xs:g[Year[Month[Day]]] to builtin type XmlPeriod
Map xs:Notation to QName
Add converter adapters for datetime.date/time
Add fields metadata key ‘format’ for time/date/binary types
Fixed issues with default literal values
Fixed issue with random field types order
20.12 (2020-12-10)#
20.11.1 (2020-11-13)#
Catch all type errors on xsi cache build #316
20.11 (2020-11-10)#
Added sub command to download remote schemas and definitions. #279
Added new optional xml type Elements to maintain ordering for repeatable choices. #296
Added xsi:type lookup procedure for xs:anyType derived elements. #306
Updated simple type flattening detection. #286
Updated generator to allow namespace structure on schemas without target namespace.
Updated generator to avoid writing min/max occurs metadata for implied values. #297
Update generator to use literal dictionary initialization.
Updated parser security, disable lxml network and entities resolve.
Fixed field types detection for elements with xs:alternative children. #284
Fixed file generation to enforce default charset UTF-8. #302
Fixed jinja2 undefined namespace var collision. #298
Fixed import class name collision. #300
Fixed restriction inheritance on xs:group elements. #301
20.10 (2020-10-02)#
Fixed generator adding multiple default value fields. #249
Fixed generator not applying nested container restrictions. #263
Fixed generator to avoid case insensitive class name conflicts. #269
Fixed generator rendering unused simple types.
Fixed generator unsorted libraries imports.
Fixed JsonParser trying to parse init=False fields. #253
Fixed NodeParser binding tail content more than once with mixed vars. #256
Added XmlWriter interface to decouple serialize from lxml. #247
Added native python xml content writer XmlEventWriter. ✨✨✨
Added lxml based content writer LxmlEventWriter.
Added generator config with options to control naming cases and aliases. #265
Updated field xml type auto detection to be more flexible. #246
Updated EnumConverter to resort to canonical form matching as last resort. #273
Updated support for derived elements. #267
This is my favorite release so far, maybe because xsdata reached one year of development ✨✨✨ or maybe because some of the last original components finally got the rewrite they deserved.
20.9 (2020-09-03)#
Added field metadata key tokens for xs:list or xs:NMTOKENS derived elements.
Added datatype factory to register custom converters.
Added XmlHandler interface to decouple parsing from lxml.
Added lxml based content handlers: LxmlEventHandler, LxmlSaxHandler
Added native python xml content handlers: XmlEventHandler, XmlSaxHandler
Added support for python >= 3.6 #241
Added codegen for soap 1.1 fault messages.
Fixed converting to enum members derived from xs:NMTOKENS.
Fixed package level import naming conflicts. #228
Fixed xml serializing to allow empty strings in attribute values. #230
Fixed xml serializing for mixed content with non generics. #238
20.8 (2020-08-01)#
Added codegen support for WSDL 1.1 and SOAP 1.1 bindings.
Added experimental web services client.
Added cli flag
--ns-struct
to group classes by target namespaces. #206Added parser config to support xinclude statements. #207
Added new xml union node to improve bindings for fields with union type. #207
Fixed class resolve issue with mixed namespaces. #204
Fixed attribute comparison issue. #209
Fixed data type mapping for various schema elements. #221
Fixed mixed content handling. #213
Code cleanup & 100% coverage.
20.7 (2020-07-04)#
Updated analyzer to allow abstract types to be generated. #199
Removed support to generate code from multiple sources. #172
Fixed naming conflict with AttributeGroup analyzer handler. #194
Fixed analyzer to merge redefined attribute groups. #196
Fixed analyzer to block inheritance on xs:override derived types. #198
Refactored code to prepare for wsdl support.
20.6 (2020-06-01)#
Updated XmlSerializer to render default namespace whenever possible.
Fixed issue generating modules outside the target package.
Fixed issue not creating nested package __init__ files.
Code cleanup & docstrings
20.5.5 (2020-05-23)#
Added version option in the xsdata cli.
Added generation of missing python __init__ files.
Added support for default values to inner enum classes.
Fixed multiple issues with abstract classes and attributes/extension flattening.
Fixed instance cross references causing codegen unpredictable results.
Fixed xml serialization of wildcard attributes with user defined model values.
Fixed issue with redefined/override elements with annotations.
Fixed expand attribute groups recursively.
Fixed false positive circular references.
Fixed enumeration unions detection.
Refactored ClassAnalyzer to smaller components.
20.5.4 (2020-05-15)#
Fix flattening enumeration unions.
Fix generation for enum fields with default/fixed value.
Fix duplicate attribute names handler to be case insensitive.
20.5.1 (2020-05-14)#
Added support to fetch remote schemas.
Updated duplicate attribute names handling.
Updated code generation for enum type fields and default values.
Fixed issue not generating classes derived from simple types.
Fixed analyzer reaching the maximum recursion depth.
Fixed analyzer to flatten properly inner self referencing classes.
Moved dataclasses python conventions to jinja filters.
20.5 (2020-05-02)#
Updated codegen cli to accept multiple definitions or directories as argument.
Update ClassBuilder to recursively search for anonymous types.
Updated XmlParser to be thread-safe.
Added performance tweaks on XmlParser.
Added parser config to fail or not on unknown properties.
Fixed primitive types being marked as forward references.
Fixed nested restrictions on xs:simpleType.
Fixed ClassAnalyzer to recover/ignore missing types.
20.4.2 (2020-04-21)#
Added support for abstract xsi:types in XmlParser.
Added cache for event names in XmlParser.
Added sanitization for generated module names.
Fixed not flattening abstract extension.
Fixed extension name conflicts between simple and complex types.
Fixed possible memory leak in CodeWriter.
Fixed looping variables twice to find next node in XmlParser.
Fixed CodeWriter adding unnecessary new lines.
20.4.1 (2020-04-13)#
Fixed open content attribute with mode suffix to be generated last.
Fixed issues with wildcard and mixed content parsing.
Updated xs:qname mapping to lxml.QName
Updated support for xs:list.
Updated parser to ignore xsi:type attributes default/fixed values.
Refactored code components.
Pass more than 99% of the W3C XML Schema 1.1 test cases
20.4 (2020-04-01)#
Added support for sequential fields.
Added support for open content.
Added support multiple redefined elements.
Updated support for wildcards to be aware of generic namespaces.
Updated support for wildcards to be aware of non generic objects.
Updated codegen to run after fully parsing all the definitions.
Updated codegen to skip unresolved schema locations.
Updated xml parser to ignore comments.
Updated xml parser to retain a copy of the input namespaces.
Fixed issues with nillable fields being ignored.
Fixed multiple issues with wrong restrictions being applied.
Fixed binding issues when there are naming conflicts.
Fixed serialization for inf/nan/exponential float and decimal values.
Fixed naming conflicts with class/package names.
Fixed multiple circular import issues during parsing and code generation.
Pass more than 98% of the W3C XML Schema 1.1 test cases
20.3 (2020-03-01)#
Added copies of common schemas xlink, xsi, xml.
Added XML Schema 1.1 models and properties.
Added support for redefines, overrides, alternatives and default attributes.
Added missing xsd data types: dateTimestamp, anyType, anyAtomicType.
Added protection against duplicate class fields enumerations.
Added python common types to the stop word list.
Updated wildcards parsing to avoid duplicate elements.
Updated native datatype detection made stricter.
Updated enumerations generation to sort and filter values.
Updated mapping xs:decimal to python Decimal
Fixed elements/attribute not inheriting namespaces from references.
Fixed module names collisions.
Fixed self referencing classes.
Fixed class name collisions complexTypes vs elements.
Fixed parsers not respecting default values.
Fixed AbstractXmlParser to handle leafless root nodes.
Pass more than 90% of the W3C XML Schema 1.1 test cases.
20.2 (2020-02-09)#
Added support xs:any and xs:anyAttribute elements.
Added support for auto detecting XML Schema namespace prefix.
Added support for xml datatypes lang and base.
Refactored SchemaParser to use the XmlParser.
Updated XmlParser to bind after elements are fully parsed.
20.1.3 (2020-01-26)#
Fixed elements min|man occurs inheritance from their container.
Fixed global elements and attributes are now always qualified.
Fixed including no namespace schemas.
Fixed list elements attribute handling.
Added support for unqualified elements.
Added support for qualified attributes.
Added support for nillable elements.
Added support for unions of member and simple types.
Added binding test suite
20.1.2 (2020-01-13)#
Generate anonymous Enumerations
Generate attributes from List and Union elements
Fix restriction inheritance
Officially support python 3.8
Completely migrate to setup.cfg
Introduce integration test suite
20.1.1 (2020-01-09)#
Change print mode to print rendered output
Added new format PlantUML class diagram to replace the old print/debug mode
20.1 (2020-01-07)#
Initial release