Skip to content

Commit 892d527

Browse files
committed
fix: raise an exception if namespace alias is not found in namespace map.
1 parent 2d2734c commit 892d527

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pydantic_xml/utils.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import pydantic as pd
88
import pydantic_core as pdc
99

10+
from pydantic_xml import errors
11+
1012
from .element.native import etree
1113
from .typedefs import Location, NsMap
1214

@@ -52,7 +54,13 @@ def from_alias(
5254
"""
5355

5456
if not is_attr or ns is not None:
55-
ns = nsmap.get(ns or '') if nsmap else None
57+
if ns is None:
58+
ns = nsmap.get('') if nsmap else None
59+
else:
60+
try:
61+
ns = nsmap[ns] if nsmap else None
62+
except KeyError:
63+
raise errors.ModelError(f"namespace alias {ns} not declared in nsmap")
5664

5765
return QName(tag=tag, ns=ns)
5866

tests/test_misc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ class BaseModel(
320320
BaseXmlModel,
321321
tag='TestTag',
322322
ns='TestNamespace',
323-
nsmap={'test': 'value'},
323+
nsmap={'TestNamespace': 'value'},
324324
ns_attrs=True,
325325
search_mode='ordered',
326326
):

0 commit comments

Comments
 (0)