
    !j'                       d Z ddlmZmZ ddlZddlmZmZ ddlm	Z
 ddlmZ dZefd,dZ	 d-d.dZd/dZd0dZ	 d1d2dZ	 d1d3dZ ed          Z G d de          Z ed e!          Zd4d%Zd5d'Z G d( d)e          Zd6d+ZdS )7zXML utility module.    )absolute_importannotationsN)TypeTypeVar)ElementTree)Protocolz'http://s3.amazonaws.com/doc/2006-03-01/tagstr	namespacereturn
ET.Elementc                8    t          j        | |rd|ini           S )z2Create ElementTree.Element with tag and namespace.xmlns)ETElement)r	   r   s     S/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/xml.pyr   r      s%    
 :c9DGY//"EEE    parenttext
str | Nonec                B    t          j        | |          }|||_        |S )z:Create ElementTree.SubElement on parent with tag and text.)r   
SubElementr   )r   r	   r   elements       r   r   r   &   s'     mFC((GNr   r   c                    | j                             d          }|dk     rdS |dz  }| j                             d          }|dk     rdS | j         ||         S )zExact namespace if found.{r       })r	   find)r   startends      r   _get_namespacer"   0   sb    KS!!Eqyyr	QJE
+

3

C
Qwwr;uSy!!r   namelist[ET.Element]c                f    t          |           }|                     |rd|z   n||rd|ini           S )z.Namespace aware ElementTree.Element.findall().ns:ns)r"   findall)r   r#   r   s      r   r(   r(   <   sG    w''I??!+t&.yB  r   FstrictboolET.Element | Nonec                    t          |           }|                     |rd|z   n||rd|ini           }|r|t          d| d          |S )z+Namespace aware ElementTree.Element.find().r&   r'   NzXML element <z> not found)r"   r   
ValueError)r   r#   r)   r   elems        r   r   r   E   ss     w''I<<!+t&.yB D  <$,::::;;;Kr   c                @    t          | ||          }|dn|j        pdS )zz
    Namespace aware ElementTree.Element.findtext() with strict flag
    raises ValueError if element name not exist.
    )r)   Nr   )r   r   )r   r#   r)   r.   s       r   findtextr0   U   s,     f---D<44dio26r   Ac                  *    e Zd ZdZed
d            Zd	S )FromXmlTypez+typing stub for class with `fromxml` methodclsType[A]r   r   r   r1   c                    dS )z2Create python object with values from XML element.N )r4   r   s     r   fromxmlzFromXmlType.fromxmlh         r   N)r4   r5   r   r   r   r1   )__name__
__module____qualname____doc__classmethodr8   r7   r   r   r3   r3   e   s>        55A A A [A A Ar   r3   B)boundr4   Type[B]	xmlstringc                P    |                      t          j        |                    S )z8Unmarshal given XML string to an object of passed class.)r8   r   
fromstring)r4   rB   s     r   	unmarshalrE   p   s    ;;r}Y//000r   bytesc                    t          j                    5 }t          j        |                               |dd           |                                cddd           S # 1 swxY w Y   dS )z%Convert ElementTree.Element to bytes.NF)encodingxml_declaration)ioBytesIOr   r   writegetvalue)r   datas     r   getbytesrO   u   s    	 
w%%! 	& 	
 	
 	

 }}                 s   >AA#&A#c                      e Zd ZdZddZdS )		ToXmlTypez)typing stub for class with `toxml` methodr   r+   r   r   c                    dS )z-Convert python object to ElementTree.Element.Nr7   )selfr   s     r   toxmlzToXmlType.toxml   r9   r   N)r   r+   r   r   )r:   r;   r<   r=   rT   r7   r   r   rQ   rQ      s.        33< < < < < <r   rQ   objc                F    t          |                     d                    S )z-Get XML data as bytes of ElementTree.Element.N)rO   rT   )rU   s    r   marshalrW      s    CIIdOO$$$r   )r	   r
   r   r
   r   r   )N)r   r   r	   r
   r   r   r   r   )r   r   r   r
   )r   r   r#   r
   r   r$   )F)r   r   r#   r
   r)   r*   r   r+   )r   r   r#   r
   r)   r*   r   r   )r4   rA   rB   r
   r   r?   )r   r   r   rF   )rU   rQ   r   rF   )r=   
__future__r   r   rJ   typingr   r   	xml.etreer   r   typing_extensionsr   _S3_NAMESPACEr   r   r"   r(   r   r0   r1   r3   r?   rE   rO   rQ   rW   r7   r   r   <module>r]      s  "   3 3 3 3 3 3 3 3 				                 ' ' ' ' ' ' & & & & & &9
 #F F F F F 6:    	" 	" 	" 	"        & 
7 
7 
7 
7 
7 GCLLA A A A A( A A A GC{###1 1 1 1
   < < < < < < < <% % % % % %r   