Changelog

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