Changelog

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 enum classes generation
    • Promote all inner enums to root #383

    • Fixed issues with producing invalid members #385

    • Added support for list/tuple member values

  • 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)

  • Added SerializerConfig with new options. #268, #320

  • Added docstring styles: rst, google, numpy, accessible. #318, #340

  • Added max line length generator configuration. #342

  • Added dynamic type locator for parsers. #332

  • Fixed multiple issues with json binding. 98.7% successful roundtrips

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. #206

  • Added 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