
    `j                    `    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddZ	ddZ
ddZdd	Zdd
Zy)z6Small XML utility helpers for ISTAT XML serialization.    )annotations)date)BytesIO)ElementTreec                    | yt        |       S )zReturn a safe XML text value. )strvalues    */backend/istat/xml_export/xml/xml_utils.py	safe_textr   
   s    }u:    c                $    | j                  d      S )z1Format dates for ISTAT XML documents as YYYYMMDD.z%Y%m%d)strftimer
   s    r   format_xml_dater      s    >>(##r   c                    t        |       S )N)r   r
   s    r   format_dater      s    5!!r   c                R    t        j                  | |      }t        |      |_        |S )z/Append a child element with text and return it.)r   
SubElementr   text)parenttagr   elements       r   append_text_noder      s%    $$VS1GU#GLNr   c                    t        j                   |       }t               }|j                  |ddd       |j                         j	                  d      S )z1Serialize an XML tree to a UTF-8 document string.zUTF-8TF)encodingxml_declarationshort_empty_elements)r   r   writegetvaluedecode)roottreebuffers      r   to_xml_stringr%   !   sP    ""4(DYFJJ"	   ??##G,,r   N)r   objectreturnr	   )r   r   r'   r	   )r   ElementTree.Elementr   r	   r   r&   r'   r(   )r"   r(   r'   r	   )__doc__
__future__r   datetimer   ior   	xml.etreer   r   r   r   r   r%    r   r   <module>r/      s-    < "   !$
"
-r   