File tree Expand file tree Collapse file tree 3 files changed +16
-3
lines changed
Expand file tree Collapse file tree 3 files changed +16
-3
lines changed Original file line number Diff line number Diff line change @@ -421,12 +421,17 @@ def __init_subclass__(
421421
422422 cls .__xml_tag__ = tag if tag is not None else getattr (cls , '__xml_tag__' , None )
423423 cls .__xml_ns__ = ns if ns is not None else getattr (cls , '__xml_ns__' , None )
424- cls .__xml_nsmap__ = nsmap if nsmap is not None else getattr (cls , '__xml_nsmap__' , None )
425424 cls .__xml_ns_attrs__ = ns_attrs if ns_attrs is not None else getattr (cls , '__xml_ns_attrs__' , False )
426425 cls .__xml_skip_empty__ = skip_empty if skip_empty is not None else getattr (cls , '__xml_skip_empty__' , None )
427426 cls .__xml_search_mode__ = search_mode if search_mode is not None \
428427 else getattr (cls , '__xml_search_mode__' , SearchMode .STRICT )
429428
429+ if parent_nsmap := getattr (cls , '__xml_nsmap__' , None ):
430+ parent_nsmap .update (nsmap or {})
431+ cls .__xml_nsmap__ = parent_nsmap
432+ else :
433+ cls .__xml_nsmap__ = nsmap
434+
430435 cls .__xml_field_serializers__ = {}
431436 cls .__xml_field_validators__ = {}
432437
Original file line number Diff line number Diff line change 77import pydantic as pd
88import pydantic_core as pdc
99
10+ from pydantic_xml import errors
11+
1012from .element .native import etree
1113from .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
Original file line number Diff line number Diff 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 ):
You can’t perform that action at this time.
0 commit comments