dapper91 / pydantic-xml

python xml for humans
https://pydantic-xml.readthedocs.io
The Unlicense
141 stars 14 forks source link

pydantic extra check #106

Closed dapper91 closed 10 months ago

dapper91 commented 10 months ago

pydantic extra='forbid' parameter is being applied to xml elements too.

Implements the feauture request.

Code example:

class Model(BaseXmlModel, tag='root', extra='forbid', search_mode=search_mode):
    attr1: str = attr()
    field1: str = element()

xml = '''
    <root attr1="attr value 1" attr2="attr value 2">
        <field1>field value 1</field1>
        <field2>field value 2</field2>
    </root>
'''

try:
    Model.from_xml(xml)
except pd.ValidationError as err:
    assert err.errors() == [
        {
            'type': 'extra_forbidden',
            'msg': 'Extra inputs are not permitted',
            'input': 'attr value 2',
            'loc': ('<attr> attr2',),
        },
        {
            'type': 'extra_forbidden',
            'msg': 'Extra inputs are not permitted',
            'input': 'field value 2',
            'loc': ('<element> field2',),
        },
    ]
codecov-commenter commented 10 months ago

Codecov Report

Merging #106 (77b1bbe) into dev (7a050ca) will increase coverage by 0.14%. The diff coverage is 97.22%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

@@            Coverage Diff             @@
##              dev     #106      +/-   ##
==========================================
+ Coverage   91.64%   91.78%   +0.14%     
==========================================
  Files          25       25              
  Lines        1317     1352      +35     
==========================================
+ Hits         1207     1241      +34     
- Misses        110      111       +1     
Flag Coverage Δ
unittests 91.78% <97.22%> (+0.14%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed Coverage Δ
pydantic_xml/serializers/factories/model.py 95.65% <95.23%> (-0.07%) :arrow_down:
pydantic_xml/element/element.py 99.48% <100.00%> (+0.04%) :arrow_up: