+
    	:i?  c                   s    ^ RI Ht . ROt^ RIt^ RI5 ^ RIt^ RIt^ RIHt ^ RI	5 ^ RI
5 ]! RR4      tR tR	 tR
 tR tR tR tR tR tR tR tR tR t ! R R]4      t ! R R]]R7      tR# )i    )absolute_importXmlSerializeN)Z*)
get_configZgenerali18n_encodingc                 s    V f   \        R4       R# V P                  4       pVf   \        R4       R# VP                  R4      pVf   \        R4       R# \        V4      # )Nz3validate_database_doc: doc is empty, validate failsFz4validate_database_doc: root is empty, validate failsversionz7validate_database_doc: version is empty, validate fails)	log_debuggetRootElementpropZdatabase_version_compatible)doc	root_noder   s   &  A/usr/lib/python3.14/site-packages/setroubleshoot/xml_serialize.pyvalidate_database_docr   =   s]    
{GH""$IHInnY'GKL*733    c                s,   \        V \        4      '       d   V # \        V \        4      '       d5   V P                  4       p V R9   d   R# V R9   d   R# \	        RV ,          4      h\        V \
        4      '       d   \        V 4      # \	        RV ,          4      h)zconvert value to boolTFzcannot convert (%s) to boolean)ZtZtrueZ1)fZfalseZ0)
isinstanceZboolstrZlower
ValueErrorZint)value   &r
   booleanr   M   s}    %	E3		&&))=EFF	E3		E{9EABBr   c                 s@    \         P                  ! \        V4      4      # N)libxml2ZnewTextr   r   r      &&r
   string_to_xmlnoder   _   s    ??3u:&&r   c                 s8    V P                  V\        V4      4      # r   )ZnewCDataBlocklenr   r   r
   string_to_cdata_xmlnoder   c   s    UCJ//r   c              #   s   "   V P                  4       pV'       d5   VP                  4       VP                  4       3x  VP                  4       pK<  R # 5ir   )Zget_propertiesget_nameZget_contentget_next)noder      & r
   xml_attributesr   s   s@      D
mmot//111}} s
   A6Ac                 s:    / p\        V 4       F	  w  r#W1V&   K  	  V# r   )r   )r   Zpropsnamer      &   r
   xml_attribute_dictr"   z   s$    E%d+d ,Lr   c              #   s   "   V P                  4       pV'       d,   VP                  4       R 8X  d   Vx  VP                  4       pK3  R# 5ielementNget_childrenget_typer   r   childr   r
   xml_child_elements_iterr*      s;     E
>>y(K  s
   A-Ac                 s    V P                  4       pV'       d?   VP                  4       R 8X  d   VP                  4       V8X  d   V# VP                  4       pKF  R# r#   )r&   r'   r   r   )r   r    r)   s   && r
   xml_get_child_element_by_namer+      sE    E
>>y(~~4' r   c                 s    . pV P                  4       pV'       dN   VP                  4       R 8X  d'   VP                  4       V8X  d   VP                  V4       VP	                  4       pKU  V# )r$   )r&   r'   r   appendr   )r   r    elementsr)      &&  r
   xml_get_child_elements_by_namer/      sS    HE
>>y(~~4'& Or   c                 s*    \        \        V 4      4      # r   )listr*   )r   r   r
   xml_child_elementsr1      s    '-..r   c                 s\    \        V 4       Uu. uF  qP                  4       NK  	  up# u upi r   )r*   r   )r   er   r
   xml_child_element_namesr3      s%    "9$"?@"?QJJL"?@@@s   )c                 s    V P                  4       pV'       d*   VP                  4       R 8X  d   R# VP                  4       pK1  R# )r$   TFr%   r(   r   r
   xml_has_child_elementsr4      s4    E
>>y( r   c                   s8   a a ] tR t^t oR tV 3R ltRtVtV ;t# )XmlSerializeMetaDatac                sR  aaa VR 8X  d   \         P                  WW#4      # VP                  R4      oVP                  RR4      oVP                  RR4      oSf-   V F%  pVP                  P                  RR4      oSf   K%   M	  M VVV3R lpWSR&   \         P                  WW#4      # )r   __init__init_from_xml_nodeN_init_postprocessc                  s   < \        V 4      ^8X  dG   \        V ^,          \        P                  4      '       d    S! V / VB  Se   S! V ^ ,          4       R# R# S! V / VB  R# )i   N)r   r   r   ZxmlNode)ZargsZkwdsr8   normal_initxml_inits   *,r
   wrapped_initZ2XmlSerializeMetaData.__new__.<locals>.wrapped_init   sU    4yA~*T!Wgoo"F"F$'$'$0%d1g. 1 T*T*r   )type__new__get__dict__)	cls	classnamebases	classdictZbase_clsr;   r8   r9   r:   s	   &&&&  @@@r
   r=   ZXmlSerializeMetaData.__new__   s     &<<AAmmJ/==!5t<%MM*=tD!#,,001EtL' " 	+ !-*||CE==r   c                s  < \         \        V `  WV4       VP                  R 4      pV'       g   R# VR8X  d
   RV n        R# RV n        \        VP                  4       4       Uu. uF  qTV,          R,          R8X  g   K  VNK  	  upV n        \        VP                  4       4       Uu. uF  qTV,          R,          R8X  g   K  VNK  	  upV n        V P                  V P                  ,           V n	        V P                  P                  4        V P                  P                  4        V P                  P                  4        R# u upi u upi )	_xml_infoNunstructuredTFZXMLFormr$   Z	attribute)Zsuperr5   r6   r>   _unstructuredr0   keys	_elements_attributes_namesZsort)r@   rA   rB   rC   Zxml_infox	__class__s   &&&&  r
   r6   ZXmlSerializeMetaData.__init__   s    "C1)IN==-~% $C %C(,X]]_(=e(=1!YAW[dAdQQ(=eCM*.x}}*?i*?QA;yCY]hChqq*?iCO8CJMM OO  "JJOO fis   #E>E'EE )	__name__
__module____qualname____firstlineno__r=   r6   __static_attributes____classdictcell__Z__classcell__)rL   __classdict__s   @@r
   r5   r5      s     >> r   r5   c                   s~   a  ] tR t^t o R tR tR tR tRR ltRR lt	RR lt
RR	 ltRR
 ltRR ltRR ltRtV tR# )r   c                s&    V P                  4        R # r   )_init_defaultsselfr   r
   r6   ZXmlSerialize.__init__   s    r   c                s"    V P                  4       # r   )get_xml_text_docrV   r   r
   __str__ZXmlSerialize.__str__   s    $$&&r   c                s,   V P                   R 8X  d   R# V P                   Fp  pV P                   V,          pVP                  RR4      pVe   \        WV! 4       4       K?  VP                  R4      '       d   \        W. 4       Kd  \        WR4       Kr  	  R# )rE   Ndefaultr0   )rD   rJ   r>   Zsetattr)rW   r    	name_inforZ   r!   r
   rU   ZXmlSerialize._init_defaults   sr    >>^+KKDt,ImmIt4G"GI.==((D+D-  r   c                s   V P                   '       dP   \        V P                  P                  4       4       Uu. uF  qP	                  R 4      '       d   K  VNK  	  pp. pW#3# V P
                  pV P                  pW#3# u upi )Z_)rF   r0   r?   rG   Z
startswithrH   rI   )rW   rK   r-   
attributesr!   r
   get_elements_and_attributesZ(XmlSerialize.get_elements_and_attributes   sw    #'(:(:(<#=W#=a\\RUEV#=HWJ $$ ~~H))J$$ Xs   A=A=Nc                sv    \         P                  ! R 4      pV P                  W!4      pVP                  V4       V# )z1.0)r   ZnewDocget_xml_nodesZsetRootElement)rW   obj_namer   rootr.   r
   get_xml_docZXmlSerialize.get_xml_doc  s3    nnU#!!#04 
r   c                s    R ;r# V P                  V4      pVP                  \        ^R7      pVe   VP                  4        V#   Te   TP                  4        i i ; i)N)ZencodingZformat)ra   Z	serializer   freeDoc)rW   r_   r   Ztext_docr.   r
   rX   ZXmlSerialize.get_xml_text_doc  s[    	""8,C}}mA}FH  s   (A Ac                s   R p  \         P                  ! VP                  4       4      pVP                  4       pV P	                  W24        Te   TP                  4        R # R #   \         P
                   dN   p\        P                  ! \        P                  RT,          4        R p?Te   TP                  4        R # R # R p?ii ; i  Te   TP                  4        i i ; i)Nz"read_xml() libxml2.parserError: %s)	r   ZparseDocZstripr   r7   parserErrorsyslogLOG_ERRrb   )rW   Zbufr_   r   r	   r2   s   &&&   r
   read_xmlZXmlSerialize.read_xml  s    
	&&syy{3..0	''6
  	 && fnn.RUV.VW 	  s*   AA# #C8,C $C  CC Cc                s   R p  \         P                  ! V4      pV'       d(   V! V4      '       g    Ve   VP                  4        R# R# V P                  WB4        Te   TP                  4        R#   \         P                   dN   p\
        P
                  ! \
        P                  RT,          4        R p?Te   TP                  4        R# R# R p?i\         dN   p\
        P
                  ! \
        P                  RT,          4        R p?Te   TP                  4        R# R# R p?ii ; i  Te   TP                  4        i i ; i)NFz'read_xml_file() libxml2.parserError: %szread_xml_file() error: %sT)r   Z	parseFilerb   r7   rc   rd   re   	Exception)rW   Zxmlfiler_   Zvalidate_docr   r2   s   &&&&  r
   read_xml_fileZXmlSerialize.read_xml_file$  s   	''0',,$   ''6  && fnn.WZ[.[\
  	  fnn.IA.MN 	  sL   A2 A2 
A2 2D*,C3D- D*D*,D%	D- %D**D- -Ec                s    R pVf   \         P                  pMN\        V\        4      '       d   \	        VR4      pRpM)\        V\
        4      '       d   M\        RV,          4      hVP                  V P                  V4      4       V'       d   VP                  4        R# R#   \         d9   p\        P                  ! \        P                  RT: RT: 24        Rp?R# Rp?ii ; i)FNZwTzbad file parameter %szcould not write z: )sysZstdoutr   r   ZopenZFileTyper   ZwriterX   Zcloserg   rd   re   )rW   r_   r   Zneed_to_closer2   s   &&&  r
   	write_xmlZXmlSerialize.write_xml8  s    	M!MyJJAs##CL $Ax(( !81!<==GGD))(34	  	MMM&..a*KLL	Ms   BB# B# #C&.-C!!C&c           
     s   V P                  4       w  r4Vf   V P                  P                  p\        P                  ! V4      pV FT  pV P
                  V,          pVP                  R\        4      p\        W4      p	V	f   K=  VP                  Wh! V	4      4       KV  	  V EF  p V P
                  R8X  d
   \        pR p
M:V P
                  V,          pVP                  R\        4      pVP                  R4      p
\        W4      p	V	e'   \        V	\        4      '       d   \        V	4      ^ 8X  d   K  V
'       d   \        P                  ! V4      pVP                  V4       V	 F}  p\        V\        4      '       d%   VP!                  W4      pVP                  V4       K=  \        P                  ! V
4      pVP                  V4       V! W4      pVP                  V4       K  	  EKE  \        V	\        4      '       d&   V	P!                  W4      pVP                  V4       EK  \        P                  ! V4      pVP                  V4       V! W4      pVP                  V4       EK  	  V#   \"         dQ   p\$        P$                  ! \$        P&                  T P                  P                  : RT: RX	: 24        R p?EK  R p?ii ; i)NZexport_typecastrE   r0   Z.z value=)r]   rL   rN   r   ZnewNoderD   r>   r   getattrZsetPropr   r   r0   r   ZaddChildr   r^   rg   rd   re   )rW   r   r_   r-   r\   r`   r    r[   typecastr   list_item_nameelement_nodeZitemr)   Zlist_item_noder2   s   &&&             r
   r^   ZXmlSerialize.get_xml_nodesK  s'   #??A~~..Hx(Dt,I }}%6<HD'E T8E?3  D%i>>^30H%)N $t 4I(}}->@QRH%.]]6%:N+=Jud$;$;E
a!#*??4#8LMM,/ %%dL99$($6$6s$KE(11%8-4__^-LN(11.A$,S$7E*33E: !& "%66 % 3 3C >e,'.t'<l3 ( 4$--e4I P   ifnn$..BYBY[_af.ghhis4   $B	I&/I&7B*I&$8I&A I&&K1AJ<<Kc                s   V P                  4       w  r4V P                  4        Vf   TpM0\        W4      pVf"   \        RV: RVP	                  4       : 24      h\        V4       F  w  rgWd9  d%   \        RV: RVP	                  4       : R24       K/  V P                  V,          pVP                  R\        4      p	\        V	\        4      '       d)   \        V	\        4      '       d   \        RV,          4      hV P                  Wi! V4      4       K  	  \!        V4       EF  p
V
P	                  4       pV P"                  '       d$   V
P%                  4       pV P                  Wg4       KI  Wc9  d%   \        RV: RVP	                  4       : R24       Ks  V P                  V,          pVP                  R\        4      p	VP                  R	4      pV'       d   \'        W. 4      p\)        W4      p\        V	\        4      '       d:   \        V	\        4      '       d$   V F  pVP+                  V	! V4      4       K  	  EK  V F(  pVP+                  V	! VP%                  4       4      4       K*  	  EKL  \        V	\        4      '       d1   \        V	\        4      '       d   V P                  Wi! V
4      4       EK  V
P%                  4       pV P                  Wi! V4      4       EK  	  R # )
Nzxml child element (z) not found in node zunknown attribute (z) found in xml element (Z)Zimport_typecastz-Illegal use of substructure in attribute (%s)zunknown element (r0   )r]   rU   r+   ZKeyErrorr   r   r   rD   r>   r   r   r<   Z
issubclassr   r   Z__setattr__r*   rF   Z
getContentrk   r/   r,   )rW   Zxml_noder_   r-   r\   r`   r    r   r[   rl   rn   rm   ZattrZ
list_nodesZ	list_nodes   &&&            r
   r7   ZXmlSerialize.init_from_xml_node  sE   #??AD0DD|PXZbZkZkZmnoo *$/KD%PTVZVcVcVefgt,I }}%6<H(D))j<.P.P !PSW!WXX  x7 0 4D9L((*D!!! %//1  - 'RVX\XeXeXghi NN40	$==):C@!*v!6!"4r2D!?!]J!(D11j<6X6X)3I KK(;< *4 *4I KK1E1E1G(HI *4 "(D11j<6X6X((x/EF , 7 7 9((x?G :r   rM   r   )NN)rN   rO   rP   rQ   r6   rY   rU   r]   ra   rX   rf   rh   rj   r^   r7   rR   rS   )rT   s   @r
   r   r      sE     '.%(M&5n=@ =@r   )Z	metaclass)r   r   r   r   r   r"   r*   r1   r+   r/   r3   r4   r   )Z
__future__r    Z__all__ri   Ztypesr   rd   Zsetroubleshoot.configr   Zsetroubleshoot.errcodeZsetroubleshoot.utilr   r   r   r   r   r   r"   r*   r+   r/   r1   r3   r4   r<   r5   Zobjectr   rM   r   r
   <module>ro      s    &2$     , $ !
 9o6
4 C$'0 !/A24 2jY@6%9 Y@r   