Skip to content

Conversation

dapper91
Copy link
Owner

@dapper91 dapper91 commented Aug 28, 2023

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',),
        },
    ]

@dapper91 dapper91 changed the base branch from master to dev August 28, 2023 16:54
@dapper91 dapper91 force-pushed the extra-elements-check branch from 5f283f1 to 3562f07 Compare August 28, 2023 17:22
@codecov-commenter
Copy link

codecov-commenter commented Aug 28, 2023

Codecov Report

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

❗ 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%) ⬆️

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%) ⬇️
pydantic_xml/element/element.py 99.48% <100.00%> (+0.04%) ⬆️

@dapper91 dapper91 force-pushed the extra-elements-check branch from 3562f07 to 77b1bbe Compare August 28, 2023 17:24
@dapper91 dapper91 merged commit 9adaba5 into dev Sep 7, 2023
@dapper91 dapper91 mentioned this pull request Sep 7, 2023
Merged
@dapper91 dapper91 deleted the extra-elements-check branch September 12, 2023 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants