3 h>`P? @ s d dl mZ dddddddd d ddd dg Zd dlZd dlT d dlZd dlZd dlmZ d dl T d dl T d dlmZm Z eddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d ZG d!d" d"eZeeG d#d deZdS )$ )absolute_importstring_to_xmlnodestring_to_cdata_xmlnodevalidate_database_docbooleanxml_attributesxml_attribute_dictxml_child_elements_iterxml_child_elementsxml_get_child_element_by_namexml_get_child_elements_by_namexml_child_element_namesxml_has_child_elementsXmlSerializeN)*) get_config) add_metaclassstring_typesZgeneral i18n_encodingc C sZ | d krt d dS | j }|d kr0t d dS |jd}|d krNt d dS t|S d S )Nz3validate_database_doc: doc is empty, validate failsFz4validate_database_doc: root is empty, validate failsversionz7validate_database_doc: version is empty, validate fails) log_debuggetRootElementpropZdatabase_version_compatible)doc root_noder r #/usr/lib/python3.6/xml_serialize.pyr > s c C sh t | tr| S t | trF| j } | dkr,dS | dkr8dS td | nt | trXt| S td | d S ) zconvert value to boolttrue1Tffalse0Fzcannot convert (%s) to booleanN)r r r )r r! r" ) isinstanceboolr lower ValueErrorint)valuer r r r N s c C s t jt|S )N)libxml2ZnewTextstr)r r( r r r r ` s c C s | j |t|S )N)Z newCDataBlocklen)r r( r r r r d s c c s0 | j }x"|r*|j |j fV |j }q W d S )N)Zget_propertiesget_nameZget_contentget_next)noder r r r r t s c C s&