Repository: tefra/xsdata
Pull request #295 (2020-10-12 20:27:39)

Remove unused stuff
I need an issue :smile: 

codecov[bot]: # [Codecov](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=h1) Report
> Merging [#295](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=desc) into [master](https://codecov.io/gh/tefra/xsdata/commit/5e9c0323954341dbba21506e3092ebd2b06c1588?el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/tefra/xsdata/pull/295/graphs/tree.svg?width=650&height=150&src=pr&token=YzDDLtywvl)](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=tree)

```diff
@@            Coverage Diff            @@
##            master      #295   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           69        69           
  Lines         5293      5250   -43     
  Branches       906       906           
=========================================
- Hits          5293      5250   -43     
```


| [Impacted Files](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [xsdata/formats/dataclass/context.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL2Zvcm1hdHMvZGF0YWNsYXNzL2NvbnRleHQucHk=) | `100.00% <ø> (ø)` | |
| [xsdata/formats/dataclass/models/elements.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL2Zvcm1hdHMvZGF0YWNsYXNzL21vZGVscy9lbGVtZW50cy5weQ==) | `100.00% <ø> (ø)` | |
| [xsdata/cli.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL2NsaS5weQ==) | `100.00% <0.00%> (ø)` | |
| [xsdata/models/xsd.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL21vZGVscy94c2QucHk=) | `100.00% <0.00%> (ø)` | |
| [xsdata/models/wsdl.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL21vZGVscy93c2RsLnB5) | `100.00% <0.00%> (ø)` | |
| [xsdata/models/config.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL21vZGVscy9jb25maWcucHk=) | `100.00% <0.00%> (ø)` | |
| [xsdata/models/mixins.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL21vZGVscy9taXhpbnMucHk=) | `100.00% <0.00%> (ø)` | |
| [xsdata/codegen/models.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL2NvZGVnZW4vbW9kZWxzLnB5) | `100.00% <0.00%> (ø)` | |
| [xsdata/codegen/writer.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL2NvZGVnZW4vd3JpdGVyLnB5) | `100.00% <0.00%> (ø)` | |
| [xsdata/formats/mixins.py](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree#diff-eHNkYXRhL2Zvcm1hdHMvbWl4aW5zLnB5) | `100.00% <0.00%> (ø)` | |
| ... and [14 more](https://codecov.io/gh/tefra/xsdata/pull/295/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=footer). Last update [5e9c032...ab424af](https://codecov.io/gh/tefra/xsdata/pull/295?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) to review)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL)

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo.png' alt='No Coverage information' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295) No Coverage information  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='0.0%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) to review)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL)

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo.png' alt='No Coverage information' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295) No Coverage information  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='0.0%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) to review)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL)

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo.png' alt='No Coverage information' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295) No Coverage information  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='0.0%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) to review)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL)

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo.png' alt='No Coverage information' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295) No Coverage information  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='0.0%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) to review)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL)

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo.png' alt='No Coverage information' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295) No Coverage information  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='0.0%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list)


sonarcloud[bot]: Kudos, SonarCloud Quality Gate passed!

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug.png' alt='Bug' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=BUG)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability.png' alt='Vulnerability' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=VULNERABILITY) (and [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot.png' alt='Security Hotspot' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=SECURITY_HOTSPOT) to review)  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell.png' alt='Code Smell' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A.png' alt='A' width='16' height='16' />](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=tefra_xsdata&pullRequest=295&resolved=false&types=CODE_SMELL)

[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo.png' alt='No Coverage information' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295) No Coverage information  
[<img src='https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/3.png' alt='0.0%' width='16' height='16' />](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list) [0.0% Duplication](https://sonarcloud.io/component_measures?id=tefra_xsdata&pullRequest=295&metric=new_duplicated_lines_density&view=list)



Patch:
diff --git a/xsdata/codegen/parsers/schema.py b/xsdata/codegen/parsers/schema.py
index 09a58474..26cee222 100644
--- a/xsdata/codegen/parsers/schema.py
+++ b/xsdata/codegen/parsers/schema.py
@@ -46,28 +46,28 @@ class SchemaParser(XmlParser):
 
     def start(
         self,
+        clazz: Type,
         queue: List[XmlNode],
+        objects: List[Parsed],
         qname: str,
         attrs: Dict,
         ns_map: Dict,
-        objects: List[Parsed],
-        clazz: Type[T],
     ):
         self.index += 1
         self.indices.append(self.index)
-        super().start(queue, qname, attrs, ns_map, objects, clazz)
+        super().start(clazz, queue, objects, qname, attrs, ns_map)
 
     def end(
         self,
         queue: List[XmlNode],
+        objects: List[Parsed],
         qname: str,
         text: Optional[str],
         tail: Optional[str],
-        objects: List[Parsed],
     ) -> Any:
         """Override parent method to set element index and namespaces map."""
         item = queue[-1]
-        obj: Any = super().end(queue, qname, text, tail, objects)
+        obj: Any = super().end(queue, objects, qname, text, tail)
 
         self.set_index(obj, self.indices.pop())
         self.set_namespace_map(obj, getattr(item, "ns_map", None))
diff --git a/xsdata/codegen/transformer.py b/xsdata/codegen/transformer.py
index a3e02287..65b72735 100644
--- a/xsdata/codegen/transformer.py
+++ b/xsdata/codegen/transformer.py
@@ -62,7 +62,6 @@ class SchemaTransformer:
         Run main processes.
 
         :param uris: list of uris to process
-        :param package: package name eg foo.bar.xxx
         """
 
         collections.apply(uris, self.process_schema)
diff --git a/xsdata/formats/dataclass/context.py b/xsdata/formats/dataclass/context.py
index 2fdaa2c5..00cc6a7c 100644
--- a/xsdata/formats/dataclass/context.py
+++ b/xsdata/formats/dataclass/context.py
@@ -117,7 +117,6 @@ class XmlContext:
             source_namespace = getattr(module, "__NAMESPACE__", None)
 
             self.cache[clazz] = XmlMeta(
-                name=name,
                 clazz=clazz,
                 qname=build_qname(namespace, name),
                 source_qname=build_qname(source_namespace, name),
diff --git a/xsdata/formats/dataclass/models/elements.py b/xsdata/formats/dataclass/models/elements.py
index 0b90c95b..718f3516 100644
--- a/xsdata/formats/dataclass/models/elements.py
+++ b/xsdata/formats/dataclass/models/elements.py
@@ -195,26 +195,20 @@ class FindMode(IntEnum):
     ALL = auto()
     ATTRIBUTE = auto()
     ATTRIBUTES = auto()
-    ELEMENT = auto()
     TEXT = auto()
     WILDCARD = auto()
     MIXED_CONTENT = ()
     NOT_WILDCARD = auto()
-    LIST = auto()
-    NOT_LIST = auto()
 
 
 find_predicates = {
     FindMode.ALL: lambda x: True,
     FindMode.ATTRIBUTE: lambda x: x.is_attribute,
     FindMode.ATTRIBUTES: lambda x: x.is_attributes,
-    FindMode.ELEMENT: lambda x: x.is_element,
     FindMode.TEXT: lambda x: x.is_text,
     FindMode.WILDCARD: lambda x: x.is_wildcard,
     FindMode.MIXED_CONTENT: lambda x: x.is_mixed_content,
     FindMode.NOT_WILDCARD: lambda x: not x.is_wildcard,
-    FindMode.LIST: lambda x: x.is_list,
-    FindMode.NOT_LIST: lambda x: not x.is_list,
 }
 
 
@@ -223,7 +217,6 @@ class XmlMeta:
     """
     Dataclass model bind metadata.
 
-    :param name: The local name
     :param clazz: The dataclass type
     :param qname: The namespace qualified name.
     :param source_qname: The source namespace qualified name.
@@ -231,7 +224,6 @@ class XmlMeta:
     :param vars: The list of field metadata
     """
 
-    name: str
     clazz: Type
     qname: str
     source_qname: str
diff --git a/xsdata/formats/dataclass/parsers/handlers/lxml.py b/xsdata/formats/dataclass/parsers/handlers/lxml.py
index e34e7cf7..9baa7bd8 100644
--- a/xsdata/formats/dataclass/parsers/handlers/lxml.py
+++ b/xsdata/formats/dataclass/parsers/handlers/lxml.py
@@ -42,20 +42,20 @@ class LxmlEventHandler(XmlHandler):
         for event, element in context:
             if event == EventType.START:
                 self.parser.start(
+                    self.clazz,
                     self.queue,
+                    self.objects,
                     element.tag,
                     element.attrib,
                     element.nsmap,
-                    self.objects,
-                    self.clazz,
                 )
             elif event == EventType.END:
                 obj = self.parser.end(
                     self.queue,
+                    self.objects,
                     element.tag,
                     element.text,
                     element.tail,
-                    self.objects,
                 )
                 element.clear()
             elif event == EventType.START_NS:
@@ -97,6 +97,8 @@ class LxmlSaxHandler(XmlHandler):
             recover=True,
             remove_comments=True,
             ns_clean=True,
+            resolve_entities=False,
+            no_network=True,
         )
 
         return etree.parse(source, parser=parser)  # nosec
@@ -113,12 +115,12 @@ class LxmlSaxHandler(XmlHandler):
         self.flush()
         self.data_frames.append(([], []))
         self.parser.start(
+            self.clazz,
             self.queue,
+            self.objects,
             tag,
             attrib,
             self.start_ns_bulk(ns_map),
-            self.objects,
-            self.clazz,
         )
 
     def end(self, tag: str):
@@ -158,7 +160,7 @@ class LxmlSaxHandler(XmlHandler):
             text = "".join(data[0]) if data[0] else None
             tail = "".join(data[1]) if data[1] else None
 
-            self.parser.end(self.queue, self.flush_next, text, tail, self.objects)
+            self.parser.end(self.queue, self.objects, self.flush_next, text, tail)
             self.flush_next = None
 
     def data(self, data: str):
diff --git a/xsdata/formats/dataclass/parsers/handlers/native.py b/xsdata/formats/dataclass/parsers/handlers/native.py
index 71e3e06d..49f9be3a 100644
--- a/xsdata/formats/dataclass/parsers/handlers/native.py
+++ b/xsdata/formats/dataclass/parsers/handlers/native.py
@@ -43,21 +43,21 @@ class XmlEventHandler(XmlHandler):
         for event, element in context:
             if event == EventType.START:
                 self.parser.start(
+                    self.clazz,
                     self.queue,
+                    self.objects,
                     element.tag,
                     element.attrib,
                     self.start_ns_bulk(self.ns_map),
-                    self.objects,
-                    self.clazz,
                 )
                 self.ns_map = {}
             elif event == EventType.END:
                 obj = self.parser.end(
                     self.queue,
+                    self.objects,
                     element.tag,
                     element.text,
                     element.tail,
-                    self.objects,
                 )
                 element.clear()
             elif event == EventType.START_NS:
diff --git a/xsdata/formats/dataclass/parsers/mixins.py b/xsdata/formats/dataclass/parsers/mixins.py
index 2283c8c9..e330622e 100644
--- a/xsdata/formats/dataclass/parsers/mixins.py
+++ b/xsdata/formats/dataclass/parsers/mixins.py
@@ -10,7 +10,6 @@ from typing import Type
 
 from xsdata.exceptions import XmlHandlerError
 from xsdata.formats.bindings import AbstractParser
-from xsdata.formats.bindings import T
 from xsdata.formats.dataclass.parsers.config import ParserConfig
 from xsdata.models.enums import EventType
 
@@ -29,12 +28,12 @@ class PushParser(AbstractParser):
     @abc.abstractmethod
     def start(
         self,
+        clazz: Type,
         queue: List,
+        objects: List,
         qname: str,
         attrs: Dict,
         ns_map: Dict,
-        objects: List,
-        clazz: Type[T],
     ):
         """Queue the next xml node for parsing."""
 
@@ -42,10 +41,10 @@ class PushParser(AbstractParser):
     def end(
         self,
         queue: List,
+        objects: List,
         qname: str,
         text: NoneStr,
         tail: NoneStr,
-        objects: List,
     ) -> Any:
         """
         Parse the last xml node and bind any intermediate objects.
@@ -135,19 +134,14 @@ class EventsHandler(XmlHandler):
         """Forward the pre-recorded events to the main parser."""
 
         obj = None
-        for event in source:
-            if event[0] == EventType.START:
-                _, qname, attrs, ns_map = event
-                self.parser.start(
-                    self.queue, qname, attrs, ns_map, self.objects, self.clazz
-                )
-            elif event[0] == EventType.END:
-                _, qname, text, tail = event
-                obj = self.parser.end(self.queue, qname, text, tail, self.objects)
-            elif event[0] == EventType.START_NS:
-                _, prefix, uri = event
-                self.parser.start_prefix_mapping(prefix, uri)
+        for event, *args in source:
+            if event == EventType.START:
+                self.parser.start(self.clazz, self.queue, self.objects, *args)
+            elif event == EventType.END:
+                obj = self.parser.end(self.queue, self.objects, *args)
+            elif event == EventType.START_NS:
+                self.parser.start_prefix_mapping(*args)
             else:
-                raise XmlHandlerError(f"Unhandled event: `{event[0]}`.")
+                raise XmlHandlerError(f"Unhandled event: `{event}`.")
 
         return obj
diff --git a/xsdata/formats/dataclass/parsers/nodes.py b/xsdata/formats/dataclass/parsers/nodes.py
index 5073ad65..5f2002d9 100644
--- a/xsdata/formats/dataclass/parsers/nodes.py
+++ b/xsdata/formats/dataclass/parsers/nodes.py
@@ -70,19 +70,20 @@ class ElementNode(XmlNode):
         :return: A tuple of the object's qualified name and the new object.
         """
         params: Dict = {}
-        ParserUtils.bind_element_attrs(params, self.meta, self.attrs, self.ns_map)
+        wild_node = False
+        text_node = False
+        ParserUtils.bind_attrs(params, self.meta, self.attrs, self.ns_map)
 
-        mixed_var = self.meta.find_var(mode=FindMode.MIXED_CONTENT)
-        if mixed_var:
-            ParserUtils.bind_mixed_content(params, mixed_var, self.position, objects)
-            ParserUtils.bind_wildcard_element(
-                params, mixed_var, text, tail, self.attrs, self.ns_map
-            )
+        wild_var = self.meta.find_var(mode=FindMode.WILDCARD)
+        if wild_var and wild_var.is_mixed_content:
+            ParserUtils.bind_mixed_objects(params, wild_var, self.position, objects)
         else:
-            ParserUtils.bind_element_children(params, self.meta, self.position, objects)
-            text_node = ParserUtils.bind_element(params, self.meta, text, self.ns_map)
-            wild_node = not text_node and ParserUtils.bind_wildcard(
-                params, self.meta, text, tail, self.attrs, self.ns_map
+            ParserUtils.bind_objects(params, self.meta, self.position, objects)
+            text_node = ParserUtils.bind_content(params, self.meta, text, self.ns_map)
+
+        if not text_node and wild_var:
+            ParserUtils.bind_wild_content(
+                params, wild_var, text, tail, self.attrs, self.ns_map
             )
 
         obj = self.meta.clazz(**params)
@@ -91,7 +92,7 @@ class ElementNode(XmlNode):
 
         objects.append((qname, obj))
 
-        if not mixed_var and self.mixed and not wild_node:
+        if not wild_var and self.mixed and not wild_node:
             tail = ParserUtils.normalize_content(tail)
             if tail:
                 objects.append((None, tail))
@@ -131,7 +132,7 @@ class ElementNode(XmlNode):
             )
 
         if var.clazz:
-            xsi_type = ParserUtils.parse_xsi_type(attrs, ns_map)
+            xsi_type = ParserUtils.xsi_type(attrs, ns_map)
             is_nillable = ParserUtils.is_nillable(attrs)
             meta = self.context.fetch(var.clazz, self.meta.namespace, xsi_type)
             mixed = self.meta.find_var(mode=FindMode.MIXED_CONTENT)
@@ -381,19 +382,19 @@ class NodeParser(PushParser):
 
     def start(
         self,
+        clazz: Type,
         queue: List[XmlNode],
+        objects: List[Parsed],
         qname: str,
         attrs: Dict,
         ns_map: Dict,
-        objects: List[Parsed],
-        clazz: Type[T],
     ):
         """Queue the next xml node for parsing."""
         try:
             item = queue[-1]
             child = item.child(qname, attrs, ns_map, len(objects))
         except IndexError:
-            xsi_type = ParserUtils.parse_xsi_type(attrs, ns_map)
+            xsi_type = ParserUtils.xsi_type(attrs, ns_map)
             meta = self.context.fetch(clazz, xsi_type=xsi_type)
             derived = xsi_type is not None and meta.qname != qname
 
@@ -412,10 +413,10 @@ class NodeParser(PushParser):
     def end(
         self,
         queue: List[XmlNode],
-        qname: str,
-        text: Optional[str],
-        tail: Optional[str],
         objects: List[Parsed],
+        qname: str,
+        text: NoneStr,
+        tail: NoneStr,
     ) -> Any:
         """
         Parse the last xml node and bind any intermediate objects.
@@ -429,7 +430,7 @@ class NodeParser(PushParser):
 
         return obj
 
-    def start_prefix_mapping(self, prefix: Optional[str], uri: str):
+    def start_prefix_mapping(self, prefix: NoneStr, uri: str):
         """Add the given prefix-URI namespaces mapping if the prefix is new."""
         prefix = prefix or None
         if prefix not in self.ns_map:
@@ -448,27 +449,27 @@ class RecordParser(NodeParser):
 
     def start(
         self,
+        clazz: Type,
         queue: List[XmlNode],
+        objects: List[Parsed],
         qname: str,
         attrs: Dict,
         ns_map: Dict,
-        objects: List[Parsed],
-        clazz: Type[T],
     ):
         self.events.append((EventType.START, qname, copy.deepcopy(attrs), ns_map))
-        super().start(queue, qname, attrs, ns_map, objects, clazz)
+        super().start(clazz, queue, objects, qname, attrs, ns_map)
 
     def end(
         self,
         queue: List[XmlNode],
-        qname: str,
-        text: Optional[str],
-        tail: Optional[str],
         objects: List[Parsed],
+        qname: str,
+        text: NoneStr,
+        tail: NoneStr,
     ) -> Any:
         self.events.append((EventType.END, qname, text, tail))
-        return super().end(queue, qname, text, tail, objects)
+        return super().end(queue, objects, qname, text, tail)
 
-    def start_prefix_mapping(self, prefix: Optional[str], uri: str):
+    def start_prefix_mapping(self, prefix: NoneStr, uri: str):
         self.events.append((EventType.START_NS, prefix, uri))
         super().start_prefix_mapping(prefix, uri)
diff --git a/xsdata/formats/dataclass/parsers/utils.py b/xsdata/formats/dataclass/parsers/utils.py
index 0675c75a..03f3b68e 100644
--- a/xsdata/formats/dataclass/parsers/utils.py
+++ b/xsdata/formats/dataclass/parsers/utils.py
@@ -20,7 +20,7 @@ from xsdata.utils.namespaces import build_qname
 
 class ParserUtils:
     @classmethod
-    def parse_xsi_type(cls, attrs: Dict, ns_map: Dict) -> Optional[str]:
+    def xsi_type(cls, attrs: Dict, ns_map: Dict) -> Optional[str]:
         """Parse the elements xsi:type attribute if present."""
         xsi_type = attrs.get(QNames.XSI_TYPE)
         if xsi_type:
@@ -54,9 +54,7 @@ class ParserUtils:
         return converter.from_string(value, types, ns_map=ns_map)
 
     @classmethod
-    def bind_element_children(
-        cls, params: Dict, meta: XmlMeta, position: int, objects: List
-    ):
+    def bind_objects(cls, params: Dict, meta: XmlMeta, position: int, objects: List):
         """Return a dictionary of qualified object names and their values for
         the given queue item."""
 
@@ -67,17 +65,17 @@ class ParserUtils:
                 value = ""
 
             arg = meta.find_var(qname, FindMode.NOT_WILDCARD)
-            if arg and cls.bind_element_param(params, arg, value):
+            if arg and cls.bind_var(params, arg, value):
                 continue
 
             arg = meta.find_var(qname, FindMode.WILDCARD)
-            if arg and cls.bind_element_wildcard_param(params, arg, qname, value):
+            if arg and cls.bind_wild_var(params, arg, qname, value):
                 continue
 
             logger.warning("Unassigned parsed object %s", qname)
 
     @classmethod
-    def bind_mixed_content(cls, params: Dict, var: XmlVar, pos: int, objects: List):
+    def bind_mixed_objects(cls, params: Dict, var: XmlVar, pos: int, objects: List):
         """Return a dictionary of qualified object names and their values for
         the given mixed content xml var."""
 
@@ -91,16 +89,7 @@ class ParserUtils:
             params[var.name].append(cls.prepare_generic_value(qname, value))
 
     @classmethod
-    def fetch_any_children(cls, position: int, objects: List) -> List[object]:
-        """Fetch the children of a wildcard node."""
-        children = []
-        while len(objects) > position:
-            _, value = objects.pop(position)
-            children.append(value)
-        return children
-
-    @classmethod
-    def bind_element_param(cls, params: Dict, var: XmlVar, value: Any) -> bool:
+    def bind_var(cls, params: Dict, var: XmlVar, value: Any) -> bool:
         """
         Add the given value to the params dictionary with the var name as key.
 
@@ -122,20 +111,7 @@ class ParserUtils:
         return True
 
     @classmethod
-    def prepare_generic_value(cls, qname: str, value: Any) -> Any:
-        """Prepare parsed value before binding to a wildcard field."""
-
-        if not is_dataclass(value):
-            value = AnyElement(qname=qname, text=value)
-        elif not isinstance(value, AnyElement):
-            value = DerivedElement(qname=qname, value=value)
-
-        return value
-
-    @classmethod
-    def bind_element_wildcard_param(
-        cls, params: Dict, var: XmlVar, qname: str, value: Any
-    ) -> bool:
+    def bind_wild_var(cls, params: Dict, var: XmlVar, qname: str, value: Any) -> bool:
         """
         Add the given value to the params dictionary with the wildcard var name
         as key.
@@ -161,7 +137,7 @@ class ParserUtils:
         return True
 
     @classmethod
-    def bind_wildcard_element(
+    def bind_wild_content(
         cls,
         params: Dict,
         var: XmlVar,
@@ -206,37 +182,7 @@ class ParserUtils:
         return True
 
     @classmethod
-    def normalize_content(cls, value: Optional[str]) -> Optional[str]:
-        """
-        Normalize element text or tail content.
-
-        If content is just whitespace return None, otherwise preserve
-        the original content.
-        """
-        if value is not None:
-            clean_value = value.strip()
-            if not clean_value:
-                value = None
-
-        return value
-
-    @classmethod
-    def parse_any_attributes(cls, attrs: Dict, ns_map: Dict) -> Dict:
-        return {
-            key: cls.parse_any_attribute(value, ns_map) for key, value in attrs.items()
-        }
-
-    @classmethod
-    def parse_any_attribute(cls, value: str, ns_map: Dict) -> str:
-        """Attempt to parse any attribute."""
-        prefix, suffix = text.split(value)
-        if prefix and prefix in ns_map and not suffix.startswith("//"):
-            value = build_qname(ns_map[prefix], suffix)
-
-        return value
-
-    @classmethod
-    def bind_element(
+    def bind_content(
         cls,
         params: Dict,
         metadata: XmlMeta,
@@ -260,9 +206,7 @@ class ParserUtils:
         return False
 
     @classmethod
-    def bind_element_attrs(
-        cls, params: Dict, metadata: XmlMeta, attrs: Dict, ns_map: Dict
-    ):
+    def bind_attrs(cls, params: Dict, metadata: XmlMeta, attrs: Dict, ns_map: Dict):
         """Parse the given element's attributes and any text content and return
         a dictionary of field names and values based on the given class
         metadata."""
@@ -285,27 +229,51 @@ class ParserUtils:
                 params[wildcard.name][qname] = cls.parse_any_attribute(value, ns_map)
 
     @classmethod
-    def bind_wildcard(
-        cls,
-        params: Dict,
-        metadata: XmlMeta,
-        txt: Optional[str],
-        tail: Optional[str],
-        attrs: Dict,
-        ns_map: Dict,
-    ) -> bool:
+    def prepare_generic_value(cls, qname: str, value: Any) -> Any:
+        """Prepare parsed value before binding to a wildcard field."""
+
+        if not is_dataclass(value):
+            value = AnyElement(qname=qname, text=value)
+        elif not isinstance(value, AnyElement):
+            value = DerivedElement(qname=qname, value=value)
+
+        return value
+
+    @classmethod
+    def normalize_content(cls, value: Optional[str]) -> Optional[str]:
         """
-        Add the given element's content and attributes to any available
-        wildcard variable.
+        Normalize element text or tail content.
 
-        Return if any data was bound.
+        If content is just whitespace return None, otherwise preserve
+        the original content.
         """
+        if value is not None:
+            clean_value = value.strip()
+            if not clean_value:
+                value = None
 
-        if txt is not None or tail is not None:
-            wildcard = metadata.find_var(mode=FindMode.WILDCARD)
-            if wildcard:
-                return cls.bind_wildcard_element(
-                    params, wildcard, txt, tail, attrs, ns_map
-                )
+        return value
 
-        return False
+    @classmethod
+    def parse_any_attributes(cls, attrs: Dict, ns_map: Dict) -> Dict:
+        return {
+            key: cls.parse_any_attribute(value, ns_map) for key, value in attrs.items()
+        }
+
+    @classmethod
+    def parse_any_attribute(cls, value: str, ns_map: Dict) -> str:
+        """Attempt to parse any attribute."""
+        prefix, suffix = text.split(value)
+        if prefix and prefix in ns_map and not suffix.startswith("//"):
+            value = build_qname(ns_map[prefix], suffix)
+
+        return value
+
+    @classmethod
+    def fetch_any_children(cls, position: int, objects: List) -> List:
+        """Fetch the children of a wildcard node."""
+        children = []
+        while len(objects) > position:
+            _, value = objects.pop(position)
+            children.append(value)
+        return children
diff --git a/xsdata/formats/dataclass/parsers/xml.py b/xsdata/formats/dataclass/parsers/xml.py
index 117a3536..3f59cd4c 100644
--- a/xsdata/formats/dataclass/parsers/xml.py
+++ b/xsdata/formats/dataclass/parsers/xml.py
@@ -6,7 +6,6 @@ from typing import List
 from typing import Optional
 from typing import Type
 
-from xsdata.formats.bindings import T
 from xsdata.formats.dataclass.parsers.handlers import LxmlEventHandler
 from xsdata.formats.dataclass.parsers.mixins import XmlHandler
 from xsdata.formats.dataclass.parsers.mixins import XmlNode
@@ -31,12 +30,12 @@ class XmlParser(NodeParser):
 
     def start(
         self,
+        clazz: Type,
         queue: List[XmlNode],
+        objects: List[Parsed],
         qname: str,
         attrs: Dict,
         ns_map: Dict,
-        objects: List[Parsed],
-        clazz: Type[T],
     ):
         """
         Queue the next xml node for parsing.
@@ -44,16 +43,16 @@ class XmlParser(NodeParser):
         Emit a start event with the current element qualified name and
         attributes.
         """
-        super().start(queue, qname, attrs, ns_map, objects, clazz)
+        super().start(clazz, queue, objects, qname, attrs, ns_map)
         self.emit_event(EventType.START, qname, attrs=attrs)
 
     def end(
         self,
         queue: List[XmlNode],
+        objects: List[Parsed],
         qname: str,
         text: Optional[str],
         tail: Optional[str],
-        objects: List[Parsed],
     ) -> Any:
         """
         Parse the last xml node and bind any intermediate objects.
@@ -62,7 +61,7 @@ class XmlParser(NodeParser):
 
         :return: The result of the binding process.
         """
-        obj = super().end(queue, qname, text, tail, objects)
+        obj = super().end(queue, objects, qname, text, tail)
         if obj:
             self.emit_event(EventType.END, qname, obj=obj)
         return obj
diff --git a/xsdata/formats/dataclass/serializers/xml.py b/xsdata/formats/dataclass/serializers/xml.py
index 02d4ef6b..cdaff616 100644
--- a/xsdata/formats/dataclass/serializers/xml.py
+++ b/xsdata/formats/dataclass/serializers/xml.py
@@ -25,8 +25,6 @@ from xsdata.models.enums import QNames
 from xsdata.utils import namespaces
 from xsdata.utils.namespaces import split_qname
 
-DEFAULT_NS_PREFIX = ""
-
 
 NoneStr = Optional[str]
 EMPTY_MAP: Dict = {}


Test patch:
diff --git a/tests/formats/dataclass/parsers/handlers/test_lxml.py b/tests/formats/dataclass/parsers/handlers/test_lxml.py
index 5f275c5b..4dd494d1 100644
--- a/tests/formats/dataclass/parsers/handlers/test_lxml.py
+++ b/tests/formats/dataclass/parsers/handlers/test_lxml.py
@@ -84,8 +84,8 @@ class LxmlSaxHandlerTests(TestCase):
 
         mock_end.assert_has_calls(
             [
-                mock.call(queue, "value", None, None, objects),
-                mock.call(queue, "value", "ab", "", objects),
+                mock.call(queue, objects, "value", None, None),
+                mock.call(queue, objects, "value", "ab", ""),
             ]
         )
         self.assertEqual(2, mock_end.call_count)
diff --git a/tests/formats/dataclass/parsers/test_nodes.py b/tests/formats/dataclass/parsers/test_nodes.py
index b787c877..22078a0d 100644
--- a/tests/formats/dataclass/parsers/test_nodes.py
+++ b/tests/formats/dataclass/parsers/test_nodes.py
@@ -78,9 +78,7 @@ class ElementNodeTests(TestCase):
     def setUp(self) -> None:
         super().setUp()
         self.context = XmlContext()
-        self.meta = XmlMeta(
-            name="foo", clazz=Foo, qname="foo", source_qname="foo", nillable=False
-        )
+        self.meta = XmlMeta(clazz=Foo, qname="foo", source_qname="foo", nillable=False)
         self.node = ElementNode(
             position=0,
             meta=self.meta,
@@ -90,20 +88,20 @@ class ElementNodeTests(TestCase):
             ns_map={},
         )
 
-    @mock.patch.object(ParserUtils, "bind_element_children")
-    @mock.patch.object(ParserUtils, "bind_wildcard")
-    @mock.patch.object(ParserUtils, "bind_element")
-    @mock.patch.object(ParserUtils, "bind_element_attrs")
+    @mock.patch.object(ParserUtils, "bind_objects")
+    @mock.patch.object(ParserUtils, "bind_wild_content")
+    @mock.patch.object(ParserUtils, "bind_content")
+    @mock.patch.object(ParserUtils, "bind_attrs")
     def test_bind(
         self,
-        mock_bind_element_attrs,
-        mock_bind_element,
-        mock_bind_wildcard,
-        mock_bind_element_children,
+        mock_bind_attrs,
+        mock_bind_content,
+        mock_bind_wild_content,
+        mock_bind_objects,
     ):
-        mock_bind_element_attrs.side_effect = add_attr
-        mock_bind_element.side_effect = add_text
-        mock_bind_element_children.side_effect = add_child
+        mock_bind_attrs.side_effect = add_attr
+        mock_bind_content.side_effect = add_text
+        mock_bind_objects.side_effect = add_child
 
         node = ElementNode(
             position=0,
@@ -120,16 +118,14 @@ class ElementNodeTests(TestCase):
         self.assertEqual("foo", objects[-1][0])
         self.assertEqual(Foo(1, 2, 3), objects[-1][1])
 
-        mock_bind_element_attrs.assert_called_once_with(
+        mock_bind_attrs.assert_called_once_with(
             mock.ANY, node.meta, node.attrs, node.ns_map
         )
-        mock_bind_element.assert_called_once_with(
+        mock_bind_content.assert_called_once_with(
             mock.ANY, node.meta, "text", node.ns_map
         )
-        mock_bind_element_children.assert_called_once_with(
-            mock.ANY, node.meta, 0, objects
-        )
-        self.assertEqual(0, mock_bind_wildcard.call_count)
+        mock_bind_objects.assert_called_once_with(mock.ANY, node.meta, 0, objects)
+        self.assertEqual(0, mock_bind_wild_content.call_count)
 
     def test_bind_with_derived_element(self):
         a = make_dataclass("A", fields=[])
@@ -149,21 +145,24 @@ class ElementNodeTests(TestCase):
         self.assertEqual("foo", objects[-1][0])
         self.assertEqual(DerivedElement("foo", a()), objects[-1][1])
 
-    @mock.patch.object(ParserUtils, "bind_element_children")
-    @mock.patch.object(ParserUtils, "bind_wildcard")
-    @mock.patch.object(ParserUtils, "bind_element")
-    @mock.patch.object(ParserUtils, "bind_element_attrs")
+    @mock.patch.object(XmlMeta, "find_var")
+    @mock.patch.object(ParserUtils, "bind_objects")
+    @mock.patch.object(ParserUtils, "bind_wild_content")
+    @mock.patch.object(ParserUtils, "bind_content")
+    @mock.patch.object(ParserUtils, "bind_attrs")
     def test_bind_with_wildcard_var(
         self,
-        mock_bind_element_attrs,
-        mock_bind_element,
-        mock_bind_wildcard,
-        mock_bind_element_children,
+        mock_bind_attrs,
+        mock_bind_content,
+        mock_bind_wild_content,
+        mock_bind_objects,
+        mock_find_var,
     ):
-        mock_bind_element_attrs.side_effect = add_attr
-        mock_bind_element.return_value = False
-        mock_bind_wildcard.side_effect = add_text
-        mock_bind_element_children.side_effect = add_child
+        mock_bind_attrs.side_effect = add_attr
+        mock_bind_content.return_value = False
+        mock_bind_wild_content.side_effect = add_text
+        mock_bind_objects.side_effect = add_child
+        mock_find_var.return_value = XmlWildcard(qname="b", name="b")
 
         node = ElementNode(
             position=0,
@@ -180,28 +179,26 @@ class ElementNodeTests(TestCase):
         self.assertEqual("foo", objects[-1][0])
         self.assertEqual(Foo(1, 2, 3), objects[-1][1])
 
-        mock_bind_element_attrs.assert_called_once_with(
+        mock_bind_attrs.assert_called_once_with(
             mock.ANY, node.meta, node.attrs, node.ns_map
         )
-        mock_bind_element.assert_called_once_with(
+        mock_bind_content.assert_called_once_with(
             mock.ANY, node.meta, "text", node.ns_map
         )
-        mock_bind_element_children.assert_called_once_with(
-            mock.ANY, node.meta, 0, objects
-        )
-        mock_bind_wildcard.assert_called_once_with(
-            mock.ANY, node.meta, "text", "tail", node.attrs, node.ns_map
-        )
-
-    @mock.patch.object(ParserUtils, "bind_element_children")
-    @mock.patch.object(ParserUtils, "bind_element")
-    @mock.patch.object(ParserUtils, "bind_element_attrs")
+        mock_bind_objects.assert_called_once_with(mock.ANY, node.meta, 0, objects)
+        # mock_bind_wild_content.assert_called_once_with(
+        #     mock.ANY, node.meta, "text", "tail", node.attrs, node.ns_map
+        # )
+
+    @mock.patch.object(ParserUtils, "bind_objects")
+    @mock.patch.object(ParserUtils, "bind_content")
+    @mock.patch.object(ParserUtils, "bind_attrs")
     def test_bind_with_mixed_flag_true(
-        self, mock_bind_element_attrs, mock_bind_element, mock_bind_element_children
+        self, mock_bind_attrs, mock_bind_content, mock_bind_objects
     ):
-        mock_bind_element_attrs.side_effect = add_attr
-        mock_bind_element.side_effect = add_text
-        mock_bind_element_children.side_effect = add_child
+        mock_bind_attrs.side_effect = add_attr
+        mock_bind_content.side_effect = add_text
+        mock_bind_objects.side_effect = add_child
 
         node = ElementNode(
             position=0,
@@ -223,18 +220,18 @@ class ElementNodeTests(TestCase):
         self.assertEqual(None, objects[-1][0])
         self.assertEqual(" tail ", objects[-1][1])
 
-    @mock.patch.object(ParserUtils, "bind_mixed_content")
-    @mock.patch.object(ParserUtils, "bind_wildcard_element")
-    @mock.patch.object(ParserUtils, "bind_element_attrs")
+    @mock.patch.object(ParserUtils, "bind_mixed_objects")
+    @mock.patch.object(ParserUtils, "bind_wild_content")
+    @mock.patch.object(ParserUtils, "bind_attrs")
     def test_bind_with_mixed_content_var(
         self,
-        mock_bind_element_attrs,
-        mock_bind_wildcard_element,
-        mock_bind_mixed_content,
+        mock_bind_attrs,
+        mock_bind_wild_content,
+        mock_bind_mixed_objects,
     ):
-        mock_bind_element_attrs.side_effect = add_attr
-        mock_bind_wildcard_element.side_effect = add_text
-        mock_bind_mixed_content.side_effect = add_content
+        mock_bind_attrs.side_effect = add_attr
+        mock_bind_wild_content.side_effect = add_text
+        mock_bind_mixed_objects.side_effect = add_content
 
         node = ElementNode(
             position=0,
@@ -251,13 +248,13 @@ class ElementNodeTests(TestCase):
         self.assertEqual("foo", objects[-1][0])
         self.assertEqual(FooMixed(1, 2, 3), objects[-1][1])
 
-        mock_bind_element_attrs.assert_called_once_with(
+        mock_bind_attrs.assert_called_once_with(
             mock.ANY, node.meta, node.attrs, node.ns_map
         )
-        mock_bind_wildcard_element.assert_called_once_with(
+        mock_bind_wild_content.assert_called_once_with(
             mock.ANY, node.meta.vars[2], "text", "tail", node.attrs, node.ns_map
         )
-        mock_bind_mixed_content.assert_called_once_with(
+        mock_bind_mixed_objects.assert_called_once_with(
             mock.ANY, node.meta.vars[2], 0, objects
         )
 
@@ -314,14 +311,14 @@ class ElementNodeTests(TestCase):
         self.assertEqual(0, actual.level)
         self.assertEqual(0, len(actual.events))
 
-    @mock.patch.object(ParserUtils, "parse_xsi_type", return_value="foo")
+    @mock.patch.object(ParserUtils, "xsi_type", return_value="foo")
     @mock.patch.object(XmlContext, "fetch")
-    def test_build_node_with_dataclass_var(self, mock_ctx_fetch, mock_parse_xsi_type):
+    def test_build_node_with_dataclass_var(self, mock_ctx_fetch, mock_xsi_type):
         var = XmlElement(name="a", qname="a", types=[Foo], dataclass=True)
         xsi_type = "foo"
         namespace = self.meta.namespace
         mock_ctx_fetch.return_value = self.meta
-        mock_parse_xsi_type.return_value = xsi_type
+        mock_xsi_type.return_value = xsi_type
 
         attrs = {"a": "b"}
         ns_map = {"ns0": "xsdata"}
@@ -331,7 +328,7 @@ class ElementNodeTests(TestCase):
         self.assertEqual(10, actual.position)
         self.assertIs(mock_ctx_fetch.return_value, actual.meta)
 
-        mock_parse_xsi_type.assert_called_once_with(attrs, ns_map)
+        mock_xsi_type.assert_called_once_with(attrs, ns_map)
         mock_ctx_fetch.assert_called_once_with(var.clazz, namespace, xsi_type)
 
     @mock.patch.object(XmlContext, "fetch")
@@ -564,7 +561,7 @@ class NodeParserTests(TestCase):
             attrs=attrs,
             ns_map=ns_map,
         )
-        parser.start(queue, "{urn:books}books", attrs, ns_map, objects, Books)
+        parser.start(Books, queue, objects, "{urn:books}books", attrs, ns_map)
         self.assertEqual(1, len(queue))
         self.assertEqual(expected_node, queue[0])
 
@@ -576,7 +573,7 @@ class NodeParserTests(TestCase):
             attrs={},
             ns_map={},
         )
-        parser.start(queue, "book", {}, {}, objects, Books)
+        parser.start(Books, queue, objects, "book", {}, {})
 
         self.assertEqual(2, len(queue))
         self.assertEqual(expected_node, queue[-1])
@@ -591,7 +588,7 @@ class NodeParserTests(TestCase):
 
         attrs = {QNames.XSI_TYPE: "b"}
         ns_map = {}
-        parser.start(queue, "a", attrs, ns_map, objects, a)
+        parser.start(a, queue, objects, "a", attrs, ns_map)
 
         expected_node = ElementNode(
             position=0,
@@ -614,7 +611,7 @@ class NodeParserTests(TestCase):
         var = XmlText(name="foo", qname="foo")
         queue.append(PrimitiveNode(var=var, ns_map={}))
 
-        result = parser.end(queue, "author", "foobar", None, objects)
+        result = parser.end(queue, objects, "author", "foobar", None)
         self.assertEqual("result", result)
         self.assertEqual(0, len(queue))
         self.assertEqual(("q", result), objects[-1])
@@ -625,7 +622,7 @@ class NodeParserTests(TestCase):
         objects = [("q", "result")]
         queue = [SkipNode()]
 
-        result = parser.end(queue, "author", "foobar", None, objects)
+        result = parser.end(queue, objects, "author", "foobar", None)
         self.assertIsNone(result)
         self.assertEqual(0, len(queue))
 
diff --git a/tests/formats/dataclass/parsers/test_utils.py b/tests/formats/dataclass/parsers/test_utils.py
index 9d9b9d74..03d8556a 100644
--- a/tests/formats/dataclass/parsers/test_utils.py
+++ b/tests/formats/dataclass/parsers/test_utils.py
@@ -27,16 +27,16 @@ class ParserUtilsTests(TestCase):
     def setUp(self) -> None:
         self.ctx = XmlContext()
 
-    def test_parse_xsi_type(self):
+    def test_xsi_type(self):
         ns_map = {"bar": "xsdata"}
         attrs = {}
-        self.assertIsNone(ParserUtils.parse_xsi_type(attrs, ns_map))
+        self.assertIsNone(ParserUtils.xsi_type(attrs, ns_map))
 
         attrs = {QNames.XSI_TYPE: "foo"}
-        self.assertEqual("foo", ParserUtils.parse_xsi_type(attrs, ns_map))
+        self.assertEqual("foo", ParserUtils.xsi_type(attrs, ns_map))
 
         attrs = {QNames.XSI_TYPE: "bar:foo"}
-        self.assertEqual("{xsdata}foo", ParserUtils.parse_xsi_type(attrs, ns_map))
+        self.assertEqual("{xsdata}foo", ParserUtils.xsi_type(attrs, ns_map))
 
     @mock.patch.object(ConverterAdapter, "from_string", return_value=2)
     def test_parse_value(self, mock_from_string):
@@ -69,7 +69,7 @@ class ParserUtilsTests(TestCase):
             ]
         )
 
-    def test_bind_element_children(self):
+    def test_bind_objects(self):
         @dataclass
         class A:
             x: int
@@ -92,7 +92,7 @@ class ParserUtilsTests(TestCase):
         ]
 
         params = {}
-        ParserUtils.bind_element_children(params, meta, 1, objects)
+        ParserUtils.bind_objects(params, meta, 1, objects)
         expected = {
             "x": 1,
             "w": AnyElement(
@@ -103,18 +103,18 @@ class ParserUtilsTests(TestCase):
         self.assertEqual(expected, params)
 
     @mock.patch("xsdata.formats.dataclass.parsers.utils.logger.warning")
-    def test_bind_element_children_with_unassigned_object(self, mock_warning):
+    def test_bind_objects_with_unassigned_object(self, mock_warning):
         a = make_dataclass("a", [("x", int)])
         meta = XmlContext().build(a)
         params = {}
         objects = [("x", 1), ("y", 2)]
 
-        ParserUtils.bind_element_children(params, meta, 0, objects)
+        ParserUtils.bind_objects(params, meta, 0, objects)
 
         self.assertEqual({"x": 1}, params)
         mock_warning.assert_called_once_with("Unassigned parsed object %s", "y")
 
-    def test_bind_mixed_content(self):
+    def test_bind_mixed_objects(self):
         generic = AnyElement(qname="foo")
         data_class = make_dataclass("A", fields=[])
         derived = DerivedElement(qname="d", value=data_class)
@@ -127,7 +127,7 @@ class ParserUtilsTests(TestCase):
 
         var = XmlWildcard(name="foo", qname="{any}foo")
         params = {}
-        ParserUtils.bind_mixed_content(params, var, 1, objects)
+        ParserUtils.bind_mixed_objects(params, var, 1, objects)
 
         expected = {var.name: [AnyElement(qname="b", text=""), derived, generic]}
         self.assertEqual(expected, params)
@@ -138,7 +138,7 @@ class ParserUtilsTests(TestCase):
 
     @mock.patch.object(ParserUtils, "parse_any_attribute")
     @mock.patch.object(ParserUtils, "parse_value")
-    def test_bind_element_attrs(self, mock_parse_value, mock_parse_any_attribute):
+    def test_bind_attrs(self, mock_parse_value, mock_parse_any_attribute):
         mock_parse_value.return_value = "2020-03-02"
         mock_parse_any_attribute.return_value = "foobar"
         metadata = self.ctx.build(ProductType)
@@ -148,7 +148,7 @@ class ParserUtilsTests(TestCase):
         ns_map = {}
         attrs = {"effDate": "2020-03-01", "foo": "bar"}
 
-        ParserUtils.bind_element_attrs(params, metadata, attrs, ns_map)
+        ParserUtils.bind_attrs(params, metadata, attrs, ns_map)
         expected = {
             "eff_date": "2020-03-02",
             "other_attributes": {"foo": "foobar"},
@@ -179,18 +179,18 @@ class ParserUtilsTests(TestCase):
         value = ParserUtils.parse_any_attribute("http://www.com", ns_map)
         self.assertEqual("http://www.com", value)
 
-    def test_bind_element_attrs_doesnt_overwrite_values(self):
+    def test_bind_attrs_doesnt_overwrite_values(self):
         metadata = self.ctx.build(ProductType)
         params = dict(eff_date="foo")
         attrs = {"effDate": "2020-03-01"}
         ns_map = {}
 
-        ParserUtils.bind_element_attrs(params, metadata, attrs, ns_map)
+        ParserUtils.bind_attrs(params, metadata, attrs, ns_map)
 
         expected = {"eff_date": "foo", "other_attributes": {"effDate": "2020-03-01"}}
         self.assertEqual(expected, params)
 
-    def test_bind_elements_attrs_ignore_init_false_vars(self):
+    def test_bind_attrs_ignore_init_false_vars(self):
         metadata = self.ctx.build(ProductType)
         eff_date = metadata.find_var("effDate")
         metadata.vars.remove(eff_date)
@@ -200,102 +200,72 @@ class ParserUtilsTests(TestCase):
         attrs = {"effDate": "2020-03-01"}
         ns_map = {}
 
-        ParserUtils.bind_element_attrs(params, metadata, attrs, ns_map)
+        ParserUtils.bind_attrs(params, metadata, attrs, ns_map)
         self.assertEqual({"other_attributes": {}}, params)
 
     @mock.patch.object(XmlMeta, "find_var")
-    def test_bind_element_attrs_skip_empty_attrs(self, mock_find_var):
+    def test_bind_attrs_skip_empty_attrs(self, mock_find_var):
         metadata = self.ctx.build(ProductType)
 
         params = {}
-        ParserUtils.bind_element_attrs(params, metadata, {}, {})
+        ParserUtils.bind_attrs(params, metadata, {}, {})
         self.assertEqual(0, len(params))
         self.assertEqual(0, mock_find_var.call_count)
 
     @mock.patch.object(ParserUtils, "parse_value", return_value="yes!")
-    def test_bind_element(self, mock_parse_value):
+    def test_bind_content(self, mock_parse_value):
         metadata = self.ctx.build(SizeType)
         var = metadata.find_var(mode=FindMode.TEXT)
         params = {}
         ns_map = {"a": "b"}
 
-        self.assertFalse(ParserUtils.bind_element(params, metadata, None, ns_map))
+        self.assertFalse(ParserUtils.bind_content(params, metadata, None, ns_map))
         self.assertEqual({}, params)
 
-        self.assertTrue(ParserUtils.bind_element(params, metadata, "foo", ns_map))
+        self.assertTrue(ParserUtils.bind_content(params, metadata, "foo", ns_map))
         self.assertEqual({"value": "yes!"}, params)
         mock_parse_value.assert_called_once_with(
             "foo", var.types, var.default, ns_map, var.is_list
         )
 
-    def test_bind_element_with_no_text_var(self):
+    def test_bind_content_with_no_text_var(self):
         params = {}
         metadata = self.ctx.build(Books)
-        self.assertFalse(ParserUtils.bind_element(params, metadata, "foo", {}))
+        self.assertFalse(ParserUtils.bind_content(params, metadata, "foo", {}))
         self.assertEqual({}, params)
 
-    def test_bind_wildcard(self):
-        metadata = self.ctx.build(Umbrella)
-        params = {}
-        attrs = {"a": "b"}
-        ns_map = {"a": "b"}
-
-        result = ParserUtils.bind_wildcard(params, metadata, None, None, attrs, ns_map)
-        self.assertFalse(result)
-        self.assertEqual({}, params)
-
-        result = ParserUtils.bind_wildcard(params, metadata, None, "bar", attrs, ns_map)
-        expected = AnyElement(text=None, tail="bar", attributes=attrs, ns_map=ns_map)
-        self.assertTrue(result)
-        self.assertEqual(expected, params["any_element"])
-
-        params.clear()
-        result = ParserUtils.bind_wildcard(
-            params, metadata, "foo", "bar", attrs, ns_map
-        )
-        expected = AnyElement(text="foo", tail="bar", attributes=attrs, ns_map=ns_map)
-        self.assertTrue(result)
-        self.assertEqual(expected, params["any_element"])
-
-    def test_bind_wildcard_with_no_wildcard_var(self):
-        params = {}
-        metadata = self.ctx.build(Books)
-        result = ParserUtils.bind_wildcard(params, metadata, "foo", "bar", {}, {})
-        self.assertFalse(result)
-        self.assertEqual({}, params)
-
-    def test_bind_element_param(self):
+    def test_bind_var(self):
         var = XmlVar(name="a", qname="a")
         params = {}
 
-        status = ParserUtils.bind_element_param(params, var, 1)
+        status = ParserUtils.bind_var(params, var, 1)
         self.assertTrue(status)
         self.assertEqual({"a": 1}, params)
 
-        status = ParserUtils.bind_element_param(params, var, 2)
+        status = ParserUtils.bind_var(params, var, 2)
         self.assertFalse(status)
         self.assertEqual({"a": 1}, params)
 
-    def test_bind_element_param_with_list_var(self):
+    def test_bind_var_with_list_var(self):
         var = XmlVar(name="a", qname="a", list_element=True)
         params = {}
 
-        status = ParserUtils.bind_element_param(params, var, 1)
+        status = ParserUtils.bind_var(params, var, 1)
         self.assertTrue(status)
         self.assertEqual({"a": [1]}, params)
 
-        status = ParserUtils.bind_element_param(params, var, 2)
+        status = ParserUtils.bind_var(params, var, 2)
         self.assertTrue(status)
         self.assertEqual({"a": [1, 2]}, params)
 
-    def test_bind_element_wildcard_param(self):
+    def test_bind_wild_var(self):
         params = {}
         var = XmlVar(name="a", qname="a")
         qname = "b"
         one = AnyElement(qname=qname, text="one")
         two = AnyElement(qname=qname, text="two")
         three = AnyElement(qname=qname, text="three")
-        bind = ParserUtils.bind_element_wildcard_param
+        bind = ParserUtils.bind_wild_var
 
         self.assertTrue(bind(params, var, qname, "one"))
         self.assertEqual(dict(a=one), params)
@@ -306,37 +276,37 @@ class ParserUtilsTests(TestCase):
         self.assertTrue(bind(params, var, qname, "three"))
         self.assertEqual(dict(a=AnyElement(children=[one, two, three])), params)
 
-    def test_bind_element_wildcard_param_with_list_var(self):
+    def test_bind_wild_var_with_list_var(self):
         params = {}
         var = XmlVar(name="a", qname="a", list_element=True)
         qname = "b"
         one = AnyElement(qname=qname, text="one")
         two = AnyElement(qname=qname, text="two")
         three = AnyElement(qname=qname, text="three")
-        bind = ParserUtils.bind_element_wildcard_param
+        bind = ParserUtils.bind_wild_var
 
         self.assertTrue(bind(params, var, qname, "one"))
         self.assertTrue(bind(params, var, qname, "two"))
         self.assertTrue(bind(params, var, qname, "three"))
         self.assertEqual(dict(a=[one, two, three]), params)
 
-    def test_bind_wildcard_element(self):
+    def test_bind_wild_content(self):
         var = XmlVar(name="a", qname="a")
         params = {}
         attrs = {}
         ns_map = {}
 
-        ParserUtils.bind_wildcard_element(params, var, None, None, attrs, ns_map)
+        ParserUtils.bind_wild_content(params, var, None, None, attrs, ns_map)
         self.assertEqual(0, len(params))
 
         params = {}
-        ParserUtils.bind_wildcard_element(params, var, "txt", "tail", attrs, ns_map)
+        ParserUtils.bind_wild_content(params, var, "txt", "tail", attrs, ns_map)
         expected = AnyElement(text="txt", tail="tail")
         self.assertEqual(dict(a=expected), params)
 
         attrs = {"a": "b"}
         ns_map = {"ns0": "a"}
-        ParserUtils.bind_wildcard_element(params, var, "txt", "tail", attrs, ns_map)
+        ParserUtils.bind_wild_content(params, var, "txt", "tail", attrs, ns_map)
         expected = AnyElement(
             text="txt",
             tail="tail",
@@ -352,13 +322,13 @@ class ParserUtilsTests(TestCase):
         attrs = {"a", "b"}
         ns_map = {"ns0", "a"}
 
-        ParserUtils.bind_wildcard_element(params, var, "txt", "tail", attrs, ns_map)
+        ParserUtils.bind_wild_content(params, var, "txt", "tail", attrs, ns_map)
         self.assertEqual(dict(a=["txt", "tail"]), params)
 
-        ParserUtils.bind_wildcard_element(params, var, None, "tail", attrs, ns_map)
+        ParserUtils.bind_wild_content(params, var, None, "tail", attrs, ns_map)
         self.assertEqual(dict(a=["txt", "tail", "tail"]), params)
 
-        ParserUtils.bind_wildcard_element(params, var, "first", None, attrs, ns_map)
+        ParserUtils.bind_wild_content(params, var, "first", None, attrs, ns_map)
         self.assertEqual(dict(a=["first", "txt", "tail", "tail"]), params)
 
     def test_prepare_generic_value(self):
diff --git a/tests/formats/dataclass/parsers/test_xml.py b/tests/formats/dataclass/parsers/test_xml.py
index a1c1fed7..1065cdd5 100644
--- a/tests/formats/dataclass/parsers/test_xml.py
+++ b/tests/formats/dataclass/parsers/test_xml.py
@@ -20,7 +20,7 @@ class XmlParserTests(TestCase):
         attrs = {"a": "b"}
         queue = []
 
-        self.parser.start(queue, "{urn:books}books", attrs, {}, [], Books)
+        self.parser.start(Books, queue, [], "{urn:books}books", attrs, {})
         self.assertEqual(1, len(queue))
 
         mock_emit_event.assert_called_once_with(
@@ -34,7 +34,7 @@ class XmlParserTests(TestCase):
         var = XmlText(name="foo", qname="foo", types=[bool])
         queue.append(PrimitiveNode(var=var, ns_map={}))
 
-        result = self.parser.end(queue, "enabled", "true", None, objects)
+        result = self.parser.end(queue, objects, "enabled", "true", None)
         self.assertTrue(result)
         self.assertEqual(0, len(queue))
         self.assertEqual(("enabled", True), objects[-1])
diff --git a/tests/formats/dataclass/test_context.py b/tests/formats/dataclass/test_context.py
index 0c873981..361d7261 100644
--- a/tests/formats/dataclass/test_context.py
+++ b/tests/formats/dataclass/test_context.py
@@ -36,7 +36,6 @@ class XmlContextTests(TestCase):
     @mock.patch.object(XmlContext, "build")
     def test_fetch(self, mock_build, mock_find_subclass):
         meta = XmlMeta(
-            name="ItemsType",
             clazz=ItemsType,
             qname="ItemsType",
             source_qname="ItemsType",
@@ -54,7 +53,6 @@ class XmlContextTests(TestCase):
         self, mock_build, mock_find_subclass
     ):
         meta = XmlMeta(
-            name="ItemsType",
             clazz=ItemsType,
             qname="ItemsType",
             source_qname="ItemsType",
@@ -73,13 +71,12 @@ class XmlContextTests(TestCase):
         self, mock_build, mock_find_subclass
     ):
         meta = XmlMeta(
-            name="ItemsType",
             clazz=ItemsType,
             qname="ItemsType",
             source_qname="ItemsType",
             nillable=False,
         )
-        xsi_meta = replace(meta, name="XsiType")
+        xsi_meta = replace(meta, qname="XsiType")
 
         mock_build.side_effect = [meta, xsi_meta]
         mock_find_subclass.return_value = xsi_meta
@@ -119,7 +116,6 @@ class XmlContextTests(TestCase):
 
         result = self.ctx.build(ItemsType, None)
         expected = XmlMeta(
-            name="ItemsType",
             clazz=ItemsType,
             qname="ItemsType",
             source_qname="ItemsType",
@@ -169,11 +165,9 @@ class XmlContextTests(TestCase):
                 name = "thug"
 
         result = self.ctx.build(Foo)
-        self.assertEqual("Foo", result.name)
         self.assertEqual("Foo", result.qname)
 
         result = self.ctx.build(Thug)
-        self.assertEqual("thug", result.name)
         self.assertEqual("thug", result.qname)
 
     @mock.patch.object(XmlContext, "get_type_hints", return_value={})
diff --git a/xsdata/utils/testing.py b/xsdata/utils/testing.py
index cfb49a10..c48a8e80 100644
--- a/xsdata/utils/testing.py
+++ b/xsdata/utils/testing.py
@@ -28,7 +28,9 @@ def load_class(output: str, clazz_name: str) -> T:
 
 def read_root_name(path: Path) -> str:
     try:
-        recovering_parser = etree.XMLParser(recover=True)
+        recovering_parser = etree.XMLParser(
+            recover=True, resolve_entities=False, no_network=True
+        )
         tree = etree.parse(str(path), parser=recovering_parser)  # nosec
         _, local_name = split_qname(tree.getroot().tag)
         return text.pascal_case(utils.safe_snake(local_name, "Type"))