Click to expand historical changelog from upstream xsdata (v26.2 and older)
## 26.2 (2026-02-15)
**Fixes**
- Fix elements in same choice different branches incorrectly merged as list
([#1206](https://github.com/tefra/xsdata/pull/1206))
**Features**
- Infer XML required property from typing annotations
([#1208](https://github.com/tefra/xsdata/pull/1208))
- Generate required metadata only for attributes without default values
([#1208](https://github.com/tefra/xsdata/pull/1208))
## 26.1 (2026-01-20)
**Fixes**
- Fixed missing imports on inheriting multiple mixins for the same class
([#1156](https://github.com/tefra/xsdata/pull/1156))
- Fixed choice elements with minOccurs <= 1 not marked as optional
- Fixed incorrect max_occurs for elements in different choice blocks
([#1179](https://github.com/tefra/xsdata/pull/1179))
- Fixed AttributeError when retrieving subclasses from cython packages
([#1200](https://github.com/tefra/xsdata/pull/1200))
**Features**
- Added flag for specifying extensions
([#1168](https://github.com/tefra/xsdata/pull/1168))
- Added support for python 3.14 ([#1173](https://github.com/tefra/xsdata/pull/1173))
- Switched to Sequence when using generic containers
([#1201](https://github.com/tefra/xsdata/pull/1201))
**Deprecations**
- Removed Python 3.9 support ([#1189](https://github.com/tefra/xsdata/pull/1189))
([#1191](https://github.com/tefra/xsdata/pull/1191))
- Removed cli options union-type, kw-only, postponed-annotations are now always enabled
- Removed xsdata shorthand ([#1128](https://github.com/tefra/xsdata/pull/1128))
## 25.7 (2025-07-06)
**Fixes**
- Ignore dynamic classes in auto-discovery mode.
([#1144](https://github.com/tefra/xsdata/pull/1144))
- Parsing tail content with nested mixed classes
([#1151](https://github.com/tefra/xsdata/pull/1151))
## 25.4 (2025-04-13)
**Features**
- Allow extensions to match module paths
([#1132](https://github.com/tefra/xsdata/pull/1132))
- Improve duplicate class names detection and resolution
([#1127](https://github.com/tefra/xsdata/pull/1127))
**Fixes**
- Resolve Code Quality Issue
## 24.12 (2024-12-22)
**Fixes**
- Set the default value of prohibited fields to None
([#1098](https://github.com/tefra/xsdata/pull/1098))
- Set body and fault as optional in output soap classes
([#1099](https://github.com/tefra/xsdata/pull/1099))
- Resolve a conflict with type location when an element and a complex type have the same
name ([#1107](https://github.com/tefra/xsdata/pull/1107))
**Features**
- Allow Xml Parser subclasses to override how the root class is located
([#1090](https://github.com/tefra/xsdata/pull/1090))
- Include common soap encoding schema
([#1100](https://github.com/tefra/xsdata/pull/1100))
**Deprecations**
- Remove subscritable types config option
- Remove Type,Tuple,List,Dict from stop words
- Deprecate xsdata shorthand, use xsdata generate instead
## 24.11 (2024-11-03)
**Fixes**
- Avoid conflict with attributes named value when flattening extensions
([#1085](https://github.com/tefra/xsdata/pull/1085))
**Features**
- Add cli config to use generic collections
([#1082](https://github.com/tefra/xsdata/pull/1082))
**Deprecations**
- Drop support for python 3.8
## 24.9 (2024-09-21)
**Fixes**
- Fix typing annotations deprecation warning in Python 3.13
([#1077](https://github.com/tefra/xsdata/pull/1077))
**Features**
- Allow generators as array elements
([#1074](https://github.com/tefra/xsdata/pull/1074))
## 24.7 (2024-07-28)
**Features**
- Improve XML parsing performance on union elements with fixed attributes
([#1066](https://github.com/tefra/xsdata/pull/1066))
- Skip optional and nillable elements on XML Serializer
([#1066](https://github.com/tefra/xsdata/pull/1066))
**Fixes**
- Reset attr types derived from missing simple types
([#1062](https://github.com/tefra/xsdata/pull/1062))
## 24.6.1 (2024-06-28)
**Fixes**
- Ruff check command typo breaks generator with v0.5.0
([#1061](https://github.com/tefra/xsdata/pull/1061))
## 24.6 (2024-06-24)
**Features**
- Add class and field info in parsing warnings
([#1036](https://github.com/tefra/xsdata/pull/1036))
- Remove whitespace from bytes encoded xml strings
([#1037](https://github.com/tefra/xsdata/pull/1037))
- Improve codegen performance ([#1043](https://github.com/tefra/xsdata/pull/1043))
**Fixes**
- JSON serializer fails on derived elements
([#1053](https://github.com/tefra/xsdata/pull/1053))
- Update typing-extensions minimum version
([#1039](https://github.com/tefra/xsdata/pull/1039))
- Avoid using not-threadsafe warnings.catch_warning
([#1042](https://github.com/tefra/xsdata/pull/1042))
- Unnest classes doesn't update inner classes recursively
([#1047](https://github.com/tefra/xsdata/pull/1047))
- Restore support for optional lists
([#1053](https://github.com/tefra/xsdata/pull/1053))
## 24.5 (2024-05-07)
**Features**
- Rewrite TreeSerializer, drop support for native python ElementTree
([#1032](https://github.com/tefra/xsdata/pull/1032))
- Validate fields fixed values ([#1013](https://github.com/tefra/xsdata/pull/1013))
- Detect optional fields in dict mapper
- Refactor typing annotations analyze process
- Generate ForwardRef() instead of Type[]
**Fixes**
- Allow soap client config subclassing
([#1010](https://github.com/tefra/xsdata/pull/1010))
- Avoid recursive error on nested group references
([#1016](https://github.com/tefra/xsdata/pull/1016))
- Add warning for same module designation
([#1018](https://github.com/tefra/xsdata/pull/1018))
## 24.4 (2024-04-01)
**Features**
- Add xml and lxml tree serializers ([#975](https://github.com/tefra/xsdata/pull/975))
- Capture namespace prefixes in user dicts
([#978](https://github.com/tefra/xsdata/pull/978))
- Add cli option to generate wrapper fields
([#982](https://github.com/tefra/xsdata/pull/982))
- Support wrapper fields in JSON data bindings
([#982](https://github.com/tefra/xsdata/pull/982))
- Use abstract suffixes to resolve class name conflicts
([#985](https://github.com/tefra/xsdata/pull/985))
- Add the version number in the cli cache key
([#990](https://github.com/tefra/xsdata/pull/990))
- Use unicodedata.name for attrs with only special characters
([#993](https://github.com/tefra/xsdata/pull/993))
- Add src code excerpts on ruff errors
([#996](https://github.com/tefra/xsdata/pull/996))
- Detect circular imports and raise appropriate error
([#999](https://github.com/tefra/xsdata/pull/999))
- Add support for Python 3.13 ([#1001](https://github.com/tefra/xsdata/pull/1001))
- Add cli debug messages with performance stats
**Fixes**
- Use deepcopy to clone codegen models
([#980](https://github.com/tefra/xsdata/pull/980))
- Generate type hints for compound fields with token elements
([#997](https://github.com/tefra/xsdata/pull/997))
- Protect prohibited attrs from turning into lists
([#998](https://github.com/tefra/xsdata/pull/998))
- Convert child attr to list when parent is list
([#998](https://github.com/tefra/xsdata/pull/998))
## 24.3.1 (2024-03-10)
**Fixes**
- Unnest class with circular reference
([#974](https://github.com/tefra/xsdata/pull/974))
## 24.3 (2024-03-10)
**Features**
- Avoid flattening root elements ([#945](https://github.com/tefra/xsdata/pull/945))
- Avoid generating ambiguous choices ([#946](https://github.com/tefra/xsdata/pull/946))
- Added various type reference validations
([#966](https://github.com/tefra/xsdata/pull/966),
[#967](https://github.com/tefra/xsdata/pull/967),
[#968](https://github.com/tefra/xsdata/pull/968))
- Calculate circular references more accurately
([#969](https://github.com/tefra/xsdata/pull/969))
- Prettify codegen errors ([#970](https://github.com/tefra/xsdata/pull/970))
- Use Ruff to sort imports ([#972](https://github.com/tefra/xsdata/pull/972))
**Fixes**
- Move ruff format in the code generator
([#964](https://github.com/tefra/xsdata/pull/964))
## 24.2.1 (2024-02-19)
- Fixed FieldInfo type errors ([#949](https://github.com/tefra/xsdata/pull/949))
- Fixed private package names ([#950](https://github.com/tefra/xsdata/pull/950))
## 24.2 (2024-02-17)
- Added Dict encoder/decoder ([#921](https://github.com/tefra/xsdata/pull/921))
- Deprecated Serializer config pretty_print/pretty_print_indentation
([#942](https://github.com/tefra/xsdata/pull/942))
- Fixed lxml event writer to respect the encoding configuration
([#940](https://github.com/tefra/xsdata/pull/940))
- Migrated documentation to mkdocs with markdown
- Refactored project docstrings
## 24.1 (2024-01-04)
- Fixed XmlParser to ignore xsi attrs when fail on unknown attributes is enabled
([#846](https://github.com/tefra/xsdata/pull/846))
- Fixed parsing mandatory byte elements with no value
([#873](https://github.com/tefra/xsdata/pull/873))
- Fixed issue in json binding with union fields
([#864](https://github.com/tefra/xsdata/pull/864))
- Fixed PycodeSerializer to escape unicode characters in string values
([#877](https://github.com/tefra/xsdata/pull/877))
- Fixed compound field choices with forward references
([#886](https://github.com/tefra/xsdata/pull/886))
- Fixed google style docstrings to add missing colon
([#884](https://github.com/tefra/xsdata/pull/884))
- Fixed deprecation warnings for datetime.datetime.utcnow()
- Fixed XmlSerializer to ignore empty non-nillable/required tokens
([#902](https://github.com/tefra/xsdata/pull/902))
- Fixed issue with invalid variable names when using originalCase naming convention
([#881](https://github.com/tefra/xsdata/pull/881))
- Added type hints for compound fields
([#858](https://github.com/tefra/xsdata/pull/858),
[#885](https://github.com/tefra/xsdata/pull/885))
- Added http header when loading remote resources
([#867](https://github.com/tefra/xsdata/pull/867))
- Added warning when converting parent field to a list
([#871](https://github.com/tefra/xsdata/pull/871))
- Added ruff to format generated code ([#892](https://github.com/tefra/xsdata/pull/892))
- Added option to use substitution group names for compound field name
([#905](https://github.com/tefra/xsdata/pull/905))
- Updated base64 decoding to enable validation
([#875](https://github.com/tefra/xsdata/pull/875))
- Updated generator to render prohibited parent fields with restriction extensions
([#908](https://github.com/tefra/xsdata/pull/908))
- Updated generator so plugins can easily override templates
## 23.8 (2023-08-12)
- Removed Python 3.7 support
- Fixed PycodeSerializer not adding imports for nested classes
- Fixed imports ordering
- Added support for strict content wildcard processing
([#803](https://github.com/tefra/xsdata/pull/803))
## 23.7 (2023-07-23)
- Fixed decimal converter to avoid scientific notations
([#826](https://github.com/tefra/xsdata/pull/826))
- Fixed nympy parameter docstring format
([#827](https://github.com/tefra/xsdata/pull/827))
- Fixed optional/required override validation
([#820](https://github.com/tefra/xsdata/pull/820))
- Fixed WSDL mapper to respect the elements original location
([#832](https://github.com/tefra/xsdata/pull/832))
- Added Python 3.12 support
## 23.6 (2023-06-24)
- Fixed conflicting enum values leading to wrong default values
([#806](https://github.com/tefra/xsdata/pull/806))
- Added support for custom decorators and base classes
([#793](https://github.com/tefra/xsdata/pull/793))
- Added parser config to load external dtd to resolve entities
([#797](https://github.com/tefra/xsdata/pull/797))
- Added requests sessions on the wsdl client transport
([#798](https://github.com/tefra/xsdata/pull/798))
- Added support subscriptable types and UnionType
([#801](https://github.com/tefra/xsdata/pull/801))
- Added option to restrict models package for auto-locator
([#809](https://github.com/tefra/xsdata/pull/809))
- Updated context to only cache supported classes
([#796](https://github.com/tefra/xsdata/pull/796))
- Removed tox requirement ([#800](https://github.com/tefra/xsdata/pull/800))
- Converted to pyproject.toml ([#802](https://github.com/tefra/xsdata/pull/802))
## 23.5 (2023-05-21)
- Fixed XML meta var index conflicts.
- Fixed mixed content handling for DTD elements.
([#749](https://github.com/tefra/xsdata/pull/749),
[#762](https://github.com/tefra/xsdata/pull/762))
- Fixed an issue with required attributes turning into optional ones.
- Fixed calculation of min/max occurs when parsing XML/JSON documents.
([#756](https://github.com/tefra/xsdata/pull/756))
- Fixed calculation of min/max occurs when parsing DTD choice content types.
([#760](https://github.com/tefra/xsdata/pull/760))
- Fixed an issue when parsing tail content for compound wildcard elements.
- Fixed an issue with the code analyzer not fully processing some classes.
- Fixed an issue with the code analyzer taking forever to process very large
enumerations. ([#776](https://github.com/tefra/xsdata/issue/776))
- Fixed an issue in the JSON parser with optional choice elements.
- Updated the transformer to silently ignore malformed JSON files.
([#750](https://github.com/tefra/xsdata/pull/750))
- Updated the override attribute handler to fix naming conflicts.
- Updated the override attribute handler to allow wildcard overrides.
- Updated conditions on extensions flattening (over-flattening).
([#754](https://github.com/tefra/xsdata/pull/754))
- Updated Group, AttributeGroup handling, skipping a few cases.
- Updated how min/max occurs are calculated with nested containers.
- Updated handling of element substitutions to treat them as choices.
([#786](https://github.com/tefra/xsdata/pull/786))
- Updated Pycodeserializer to skip default field values.
- Updated flattening restriction base classes when sequence elements are out of order.
- Updated docformatter to v1.6.5.
- Added support to override compound fields.
- Added support for multiple sequential groups in a class.
- Added support for non-list compound fields.
- Added support to mix list and non-list fields with sequence groups.
- Added an option to include headers in generated files.
([#746](https://github.com/tefra/xsdata/pull/746))
- Added an option to cache the initial load and mapping of resources.
- Added support for regular expressions in config substitutions.
([#755](https://github.com/tefra/xsdata/pull/755))
- Added a pretty print indentation option in the serializer config.
([#780](https://github.com/tefra/xsdata/pull/780))
- Added an option to set the encoding in the SOAP Client.
([#773](https://github.com/tefra/xsdata/pull/773))
- Added a CLI flag to show debug messages.
- Added a debug message for possible circular references during code generation.
- Added support to generate prohibited fields when they restrict parent fields.
([#781](https://github.com/tefra/xsdata/pull/781))
This release is bigger than intended and includes many major changes, that's why it took
so long.
## 22.12 (2022-12-17)
- Added option to ignore xml pattern restrictions
[#727](https://github.com/tefra/xsdata/pull/727)
- Added globalns support via SerializerConfig
[#724](https://github.com/tefra/xsdata/pull/724)
- Pinned docformatter version to v1.5.0 [#729](https://github.com/tefra/xsdata/pull/729)
## 22.11 (2022-11-06)
- Added list wrapper for elements and primitive nodes
[#710](https://github.com/tefra/xsdata/pull/710)
## 22.9 (2022-09-24)
- Fixed code generation inconsistencies in different operating systems.
- Fixed circular imports error [#706](https://github.com/tefra/xsdata/pull/706)
- Fixed naming conflicts in imports [#706](https://github.com/tefra/xsdata/pull/706)
- Fixed issue with wrong occurrences in DTD code generation
[#705](https://github.com/tefra/xsdata/pull/705)
- Fixed xs:group and xs:attrGroup name conflicts
[#702](https://github.com/tefra/xsdata/pull/702)
- Added mathml3 in standard schemas
## 22.8 (2022-08-21)
- Added pycode serializer [#626](https://github.com/tefra/xsdata/issues/626)
- Added option to filter out unused global types
[#691](https://github.com/tefra/xsdata/issues/691)
- Avoid using generics for mixed content when possible
[#696](https://github.com/tefra/xsdata/pull/696)
- Removed support for python 3.6 [#671](https://github.com/tefra/xsdata/pull/671)
## 22.7 (2022-07-22)
- Fix empty lists do not get serialized
[#686](https://github.com/tefra/xsdata/issues/686)
- Added external DTD code generator [#688](https://github.com/tefra/xsdata/pull/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](https://github.com/tefra/xsdata/pull/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](https://github.com/tefra/xsdata/pull/672)
## 22.3 (2022-03-20)
- Added official support for python 3.11
- Fixed enumerations restricting complex types
[#659](https://github.com/tefra/xsdata/issues/659)
- Fixed attribute name duplicate check to avoid invalid slugs
## 22.2 (2022-02-06)
- Fixed substitution groups on duplicate global types
[#648](https://github.com/tefra/xsdata/issues/648)
- Added Postponed Annotations config option
[#646](https://github.com/tefra/xsdata/issues/646)
- Added support for subclasses with different namespaces
[#654](https://github.com/tefra/xsdata/issues/654)
## 22.1 (2022-01-23)
- Added recursive glob for cli dir source
[#643](https://github.com/tefra/xsdata/issues/643)
- Added cfg options to change/force compound field names
[#639](https://github.com/tefra/xsdata/issues/639)
## 21.12 (2021-12-05)
- Fixed wsdl generator to use operation name for rpc input messages
[#609](https://github.com/tefra/xsdata/issues/609)
- Fixed wsdl generator to check for qualified elements for message part types
[#612](https://github.com/tefra/xsdata/issues/612)
- Fixed compound field matcher to prefer exact types over derived
[#617](https://github.com/tefra/xsdata/issues/617)
- Added async to the reserved keywords
[#600](https://github.com/tefra/xsdata/issues/600)
- Added generator config for search & replace substitutions
[#624](https://github.com/tefra/xsdata/issues/624)
- Updated code generator to remove abstract elements from class attrs
[#627](https://github.com/tefra/xsdata/issues/627)
- Updated code generator to filter out all unused types
[#629](https://github.com/tefra/xsdata/issues/629)
## 21.11 (2021-11-02)
- Fixed unescaped quotes in regex pattern
[#592](https://github.com/tefra/xsdata/issues/592)
- Added config option fail_on_unknown_attributes
[#597](https://github.com/tefra/xsdata/issues/597)
- Fixed build for python 3.10
## 21.9 (2021-09-04)
- Automate cli generate options [#578](https://github.com/tefra/xsdata/pull/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](https://github.com/tefra/xsdata/issues/579)
- Re-raise xml syntax errors as xsdata.exceptions.ParserError
[#571](https://github.com/tefra/xsdata/issues/571)
- Added cli summary with recovered warnings and issues
[#583](https://github.com/tefra/xsdata/pull/583)
- Removed the native and lxml SAX handlers
[#582](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/pull/549)
- Added SerializerConfig option to ignore optional default attributes
[#555](https://github.com/tefra/xsdata/pull/555)
- Added warning on unexpected duplicate types
[#564](https://github.com/tefra/xsdata/pull/564)
- Added GeneratorConfig support for kw_only and slots for python >= 3.10
- Added structure style namespace-clusters
[#573](https://github.com/tefra/xsdata/pull/573)
- Updated text fields default value to empty string and marked as required
[#570](https://github.com/tefra/xsdata/pull/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](https://github.com/tefra/xsdata/pull/518)
- Fixed analyzer flattening bare types [#541](https://github.com/tefra/xsdata/pull/541)
- Fixed multiple issues with compound fields and override fields
[#533](https://github.com/tefra/xsdata/pull/533)
- Fixed missing derived elements types during xml parsing
[#541](https://github.com/tefra/xsdata/pull/541)
- Added structure style: clusters for smaller packages
[#509](https://github.com/tefra/xsdata/pull/509)
- Added configuration to generate relative imports
[#519](https://github.com/tefra/xsdata/pull/519)
- Added configuration to toggle all dataclasses features
[#529](https://github.com/tefra/xsdata/pull/529)
- Added binding support for tuple typing annotations (frozen dataclasses)
[#529](https://github.com/tefra/xsdata/pull/529)
- Added support to bind data directly from xml/lxml Element and ElementTree
[#531](https://github.com/tefra/xsdata/pull/531)
[#546](https://github.com/tefra/xsdata/pull/546)
- Updated analyzer to avoid same name for outer-inner classes
[#511](https://github.com/tefra/xsdata/pull/511)
- Updated cli to fail early if config file is invalid
[#514](https://github.com/tefra/xsdata/pull/514)
- Updated cli to remove setuptools from runtime dependencies
[#515](https://github.com/tefra/xsdata/pull/515)
- Updated analyzer to relax override field validations completely
[#516](https://github.com/tefra/xsdata/pull/516)
- Updated analyzer to sort classes before class name conflict resolution
[#517](https://github.com/tefra/xsdata/pull/517)
- Updated JSON parser to attempt binding against subclasses
[#527](https://github.com/tefra/xsdata/pull/527)
- Updated analyzer to guard against multiple substitution group runs
[#538](https://github.com/tefra/xsdata/pull/538)
- Updated code generation to use case-sensitive reserved words
[#545](https://github.com/tefra/xsdata/pull/545)
## 21.6 (2021-06-01)
- Fixed no args Dict annotation, raising an exception
[#494](https://github.com/tefra/xsdata/issues/494)
- Fixed original name case not working for field names
[#498](https://github.com/tefra/xsdata/issues/498)
- Fixed element type resolution with duplicate name conflicts
[#503](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/491)
- Added new xml type `Ignore` to skip fields during binding
[#504](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/469)
- Added support for marshalling array of objects for json
[#448](https://github.com/tefra/xsdata/issues/448)
- Added support to generate code from raw json documents
[#445](https://github.com/tefra/xsdata/issues/445)
- Added docstring style Blank to avoid generating them
[#460](https://github.com/tefra/xsdata/issues/460)
- Added validations for non-supported type hints
- Added support for python 3.10
- Generate package **all** lists [#459](https://github.com/tefra/xsdata/issues/459)
- Generate factory for xs:list enumeration default values
[#471](https://github.com/tefra/xsdata/issues/471)
- Avoid generating prohibited elements with maxOccurs==0
[#478](https://github.com/tefra/xsdata/issues/478)
- Avoid generating identical overriding fields
[#466](https://github.com/tefra/xsdata/issues/466)
- Fixed flattening base classes if they are also subclasses
[#473](https://github.com/tefra/xsdata/issues/473)
- Fixed unchecked class name conflict resolution
[#457](https://github.com/tefra/xsdata/issues/457)
- Refactored context components to improve binding performance
[#476](https://github.com/tefra/xsdata/issues/476)
## 21.4 (2021-04-02)
- Split requirements to extras cli, soap and lxml
[#419](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/429)
- Added cli short flags for all options and flags
- Added handler to set effective choice groups
[#433](https://github.com/tefra/xsdata/issues/433)
- Moved plantUML output format to a standalone
[plugin](https://github.com/tefra/xsdata-plantuml)
- 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](https://github.com/tefra/xsdata/issues/407)
- Added naming schemes screaming snake case and original case
- Updated xsi:lookup on xs:any derived elements
[#315](https://github.com/tefra/xsdata/issues/315)
- Updated fields restriction inheritance
[#417](https://github.com/tefra/xsdata/issues/417)
- Updated cli to allow package override from arguments
[#416](https://github.com/tefra/xsdata/issues/416)
- Updated code generation to merge duplicate global types earlier
[#406](https://github.com/tefra/xsdata/issues/406)
- Fixed docstrings issue breaking python syntax
[#403](https://github.com/tefra/xsdata/issues/403)
- Fixed bindings for nillable content without workarounds
[#408](https://github.com/tefra/xsdata/issues/408)
- Fixed resolver to apply aliases on extensions and choice fields
[#414](https://github.com/tefra/xsdata/issues/414)
- Fixed schema models limiting xs:appinfo occurrences
[#420](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/348)
- Added mixed pascal naming scheme [#348](https://github.com/tefra/xsdata/issues/348)
- Added access to element/attribute name generators
[#381](https://github.com/tefra/xsdata/issues/381)
- Added XmlHexBinary/XmlBase64Binary builtin data types
[#387](https://github.com/tefra/xsdata/issues/387)
- Added support for xs:anyType root elements
[#399](https://github.com/tefra/xsdata/issues/399)
- Updated JSON binding modules to use the fields local name
[#389](https://github.com/tefra/xsdata/issues/389)
- Updated enum classes generation
- Promote all inner enums to root [#383](https://github.com/tefra/xsdata/issues/383)
- Fixed issues with producing invalid members
[#385](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/375)
- Fixed issue not generating fields derived from xs:alternative elements
[#393](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/346)
- Set empty complexType base to anySimpleType
[#349](https://github.com/tefra/xsdata/issues/349)
- Improve duplicate attr names detection
[#351](https://github.com/tefra/xsdata/issues/351)
- Add SerializerConfig::xml_declaration option
[#357](https://github.com/tefra/xsdata/issues/357)
- Generate default value/factory for compound fields
[#359](https://github.com/tefra/xsdata/issues/359)
- Fixed default value for token fields
[#360](https://github.com/tefra/xsdata/issues/360)
- Add doc metadata for compound fields
[#362](https://github.com/tefra/xsdata/issues/362)
- JsonParser: handle class and primitive unions
[#369](https://github.com/tefra/xsdata/issues/369)
- Update python mappings [#366](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/268),
[#320](https://github.com/tefra/xsdata/issues/320)
- Added docstring styles: rst, google, numpy, accessible.
[#318](https://github.com/tefra/xsdata/issues/318),
[#340](https://github.com/tefra/xsdata/issues/340)
- Added `max line length` generator configuration.
[#342](https://github.com/tefra/xsdata/issues/342)
- Added dynamic type locator for parsers.
[#332](https://github.com/tefra/xsdata/issues/332)
- Fixed multiple issues with json binding.
`98[7%](https://github.com/tefra/xsdata-w3c-tests/actions) successful roundtrips
## 20.11.1 (2020-11-13)
- Catch all type errors on xsi cache build
[#316](https://github.com/tefra/xsdata/issues/316)
## 20.11 (2020-11-10)
- Added sub command to download remote schemas and definitions.
[#279](https://github.com/tefra/xsdata/issues/279)
- Added new optional xml type `Elements` to maintain ordering for repeatable choices.
[#296](https://github.com/tefra/xsdata/issues/296)
- Added xsi:type lookup procedure for xs:anyType derived elements.
[#306](https://github.com/tefra/xsdata/issues/306)
- Updated simple type flattening detection.
[#286](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/284)
- Fixed file generation to enforce default charset UTF-8.
[#302](https://github.com/tefra/xsdata/issues/302)
- Fixed jinja2 undefined namespace var collision.
[#298](https://github.com/tefra/xsdata/issues/298)
- Fixed import class name collision. [#300](https://github.com/tefra/xsdata/issues/300)
- Fixed restriction inheritance on xs:group elements.
[#301](https://github.com/tefra/xsdata/issues/301)
## 20.10 (2020-10-02)
- Fixed generator adding multiple default value fields.
[#249](https://github.com/tefra/xsdata/issues/249)
- Fixed generator not applying nested container restrictions.
[#263](https://github.com/tefra/xsdata/issues/253)
- Fixed generator to avoid case insensitive class name conflicts.
[#269](https://github.com/tefra/xsdata/issues/269)
- Fixed generator rendering unused simple types.
- Fixed generator unsorted libraries imports.
- Fixed JsonParser trying to parse init=False fields.
[#253](https://github.com/tefra/xsdata/issues/253)
- Fixed NodeParser binding tail content more than once with mixed vars.
[#256](https://github.com/tefra/xsdata/issues/256)
- Added XmlWriter interface to decouple serialize from lxml.
[#247](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/265)
- Updated field xml type auto-detection to be more flexible.
[#246](https://github.com/tefra/xsdata/issues/246)
- Updated EnumConverter to resort to canonical form matching as last resort.
[#273](https://github.com/tefra/xsdata/issues/273)
- Updated support for derived elements.
[#267](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/206)
- Fixed xml serializing to allow empty strings in attribute values.
[#230](https://github.com/tefra/xsdata/issues/230)
- Fixed xml serializing for mixed content with non generics.
[#238](https://github.com/tefra/xsdata/issues/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](https://github.com/tefra/xsdata/issues/206)
- Added parser config to support xinclude statements.
[#207](https://github.com/tefra/xsdata/issues/207)
- Added new xml union node to improve bindings for fields with union type.
[#207](https://github.com/tefra/xsdata/issues/207)
- Fixed class resolve issue with mixed namespaces.
[#204](https://github.com/tefra/xsdata/issues/204)
- Fixed attribute comparison issue. [#209](https://github.com/tefra/xsdata/issues/209)
- Fixed data type mapping for various schema elements.
[#221](https://github.com/tefra/xsdata/issues/221)
- Fixed mixed content handling. [#213](https://github.com/tefra/xsdata/issues/213)
- Code cleanup & 100% coverage.
## 20.7 (2020-07-04)
- Updated analyzer to allow abstract types to be generated.
[#199](https://github.com/tefra/xsdata/issues/199)
- Removed support to generate code from multiple sources.
[#172](https://github.com/tefra/xsdata/issues/172)
- Fixed naming conflict with AttributeGroup analyzer handler.
[#194](https://github.com/tefra/xsdata/issues/194)
- Fixed analyzer to merge redefined attribute groups.
[#196](https://github.com/tefra/xsdata/issues/196)
- Fixed analyzer to block inheritance on xs:override derived types.
[#198](https://github.com/tefra/xsdata/issues/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
https://travis-ci.org/tefra/xsdata-w3c-tests
## 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
https://travis-ci.org/tefra/xsdata-w3c-tests
## 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
https://travis-ci.org/tefra/xsdata-w3c-tests.
## 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