관리-도구
편집 파일: xml_serialize.cpython-39.pyc
a ����U+eP?����������������������@���s����d�dl�mZ�g�d�Zd�dlZd�dlT�d�dlZd�dlZd�dlmZ�d�dl T�d�dl T�d�dlmZm Z �edd�Zd d ��Zdd��Zd d��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd ��ZG�d!d"��d"e�Zee�G�d#d$��d$e��ZdS�)%�����)�absolute_import) �string_to_xmlnode�string_to_cdata_xmlnode�validate_database_doc�boolean�xml_attributes�xml_attribute_dict�xml_child_elements_iter�xml_child_elements�xml_get_child_element_by_name�xml_get_child_elements_by_name�xml_child_element_names�xml_has_child_elements�XmlSerializeN)�*)� get_config)� add_metaclass�string_typesZgeneral� i18n_encodingc�����������������C���sZ���|�d�u�rt�d��dS�|����}|d�u�r0t�d��dS�|�d�}|d�u�rNt�d��dS�t|�S�d�S�)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�propZdatabase_version_compatible)�doc� root_noder�����r����@/usr/lib/python3.9/site-packages/setroubleshoot/xml_serialize.pyr���>���s���� r���c�����������������C���sh���t�|�t�r|�S�t�|�t�rF|����}�|�dv�r,dS�|�dv�r8dS�td|����nt�|�t�rXt|��S�td|����dS�)zconvert value to bool)�t�true�1T)�fZfalse�0Fzcannot convert (%s) to booleanN)� isinstance�boolr����lower� ValueError�int)�valuer���r���r���r���N���s���� r���c�����������������C���s���t��t|��S��N)�libxml2ZnewText�str�r���r'���r���r���r���r���`���s����r���c�����������������C���s���|���|t|��S�r(���)Z newCDataBlock�lenr+���r���r���r���r���d���s����r���c�����������������c���s,���|�����}|r(|���|���fV��|���}qd�S�r(���)Zget_properties�get_nameZget_content�get_next)�noder���r���r���r���r���t���s����r���c�����������������C���s"���i�}t�|��D�]\}}|||<�q|S�r(���)r���)r/���Zprops�namer'���r���r���r���r���{���s���� r���c�����������������c���s,���|�����}|r(|���dkr|V��|���}qd�S��N�element��get_children�get_typer.����r/����childr���r���r���r �������s ����r ���c�����������������C���s6���|�����}|r2|���dkr(|���|kr(|S�|���}qd�S�r1���)r4���r5���r-���r.���)r/���r0���r7���r���r���r���r�������s���� r���c�����������������C���s@���g�}|�����}|r<|���dkr2|���|kr2|�|��|���}q|S�r1���)r4���r5���r-����appendr.���)r/���r0����elementsr7���r���r���r���r�������s���� r���c�����������������C���s���t�t|���S�r(���)�listr ����r/���r���r���r���r �������s����r ���c�����������������C���s���dd��t�|��D��S�)Nc�����������������S���s���g�|�]}|�����qS�r���)r-���)�.0�er���r���r���� <listcomp>���������z+xml_child_element_names.<locals>.<listcomp>)r ���r;���r���r���r���r �������s����r ���c�����������������C���s*���|�����}|r&|���dkrdS�|���}qdS�)Nr2���TFr3���r6���r���r���r���r�������s���� r���c�����������������������s$���e�Zd�Zdd��Z��fdd�Z���ZS�)�XmlSerializeMetaDatac��������������������s����|dkrt��|�|||�S�|�d��|�dd���|�dd�����d�u�rh|D�]}|j�dd����d�urF�qhqFn�����fdd�}||d<�t��|�|||�S�)Nr����__init__�init_from_xml_node�_init_postprocessc���������������������sR���t�|��dkr@t|�d�tj�r@�|�i�|�����d�urN��|�d���n�|�i�|���d�S�)N��������r���)r,���r"���r)���ZxmlNode)�args�kwds�rC���Znormal_initZxml_initr���r����wrapped_init����s ����z2XmlSerializeMetaData.__new__.<locals>.wrapped_init)�type�__new__�get�__dict__)�cls� classname�bases� classdictZbase_clsrI���r���rH���r���rK�������s���� zXmlSerializeMetaData.__new__c��������������������s����t�t|���|||��|�d�����s&d�S���dkr6d|�_njd|�_��fdd�t������D��|�_��fdd�t������D��|�_|�j|�j�|�_ |�j� ���|�j� ���|�j � ���d�S�)N� _xml_info�unstructuredTFc��������������������s ���g�|�]}��|�d��dkr|�qS�)�XMLFormr2���r����r<����x�Zxml_infor���r���r>�������r?���z1XmlSerializeMetaData.__init__.<locals>.<listcomp>c��������������������s ���g�|�]}��|�d��dkr|�qS�)rT���Z attributer���rU���rW���r���r���r>�������r?���)�superr@���rA���rL���� _unstructuredr:����keys� _elements�_attributes�_names�sort)rN���rO���rP���rQ����� __class__rW���r���rA�������s���� zXmlSerializeMetaData.__init__)�__name__� __module__�__qualname__rK���rA���� __classcell__r���r���r_���r���r@�������s���r@���c�������������������@���sr���e�Zd�Zdd��Zdd��Zdd��Zdd��Zdd d�Zddd �Zddd�Z ddd�Z ddd�Zddd�Zddd�Z d S�)r���c�����������������C���s���|������d�S�r(���)�_init_defaults��selfr���r���r���rA�������s����zXmlSerialize.__init__c�����������������C���s���|�����S�r(���)�get_xml_text_docrf���r���r���r����__str__����s����zXmlSerialize.__str__c�����������������C���sp���|�j�dkrd�S�|�jD�]V}|�j�|�}|�dd��}|d�urFt|�||����q|�d�r^t|�|g���qt|�|d���qd�S�)NrS����defaultr:���)rR���r]���rL����setattr)rg���r0���� name_inforj���r���r���r���re�������s���� zXmlSerialize._init_defaultsc�����������������C���s8���|�j�r$dd��t|�j����D��}g�}n|�j}|�j}||fS�)Nc�����������������S���s���g�|�]}|��d��s|�qS�)�_)� startswithrU���r���r���r���r>�����r?���z<XmlSerialize.get_elements_and_attributes.<locals>.<listcomp>)rY���r:���rM���rZ���r[���r\���)rg���r9���� attributesr���r���r����get_elements_and_attributes����s����z(XmlSerialize.get_elements_and_attributesNc�����������������C���s$���t��d�}|��||�}|�|��|S�)Nz1.0)r)���ZnewDoc� get_xml_nodesZsetRootElement)rg����obj_namer����rootr���r���r����get_xml_doc��s���� zXmlSerialize.get_xml_docc�����������������C���sL���d��}}z,|���|�}|jtdd�}W�|d�urH|����n|d�urF|����0�|S�)NrE���)�encoding�format)rt���Z serializer����freeDoc)rg���rr���r���Ztext_docr���r���r���rh�����s���� � zXmlSerialize.get_xml_text_docc�������������� ���C���s����d�}z�z&t��|����}|���}|��||��W�nL�t�jyx�}�z2t�tjd|���W�Y�d�}~W�|d�url|����d�S�d�}~0�0�W�|d�ur�|����n|d�ur�|����0�d�S�)Nz"read_xml() libxml2.parserError: %s) r)���ZparseDoc�stripr���rB����parserError�syslog�LOG_ERRrw���)rg����bufrr���r���r���r=���r���r���r����read_xml��s ����� �zXmlSerialize.read_xmlc�������������� ���C���s ��d�}��z�z>t��|�}|r8||�s8W�W�|d�ur4|����dS�|��||��W�n��t�jy��}�z2t�tjd|���W�Y�d�}~W�|d�ur�|����dS�d�}~0��ty��}�z2t�tjd|���W�Y�d�}~W�|d�ur�|����dS�d�}~0�0�W�|d�u�r|����n|d�u�r|����0�dS�)NFz'read_xml_file() libxml2.parserError: %szread_xml_file() error: %sT)r)���Z parseFilerw���rB���ry���rz���r{���� Exception)rg���Zxmlfilerr���Zvalidate_docr���r=���r���r���r���� read_xml_file&��s8���� ��� � zXmlSerialize.read_xml_filec�������������� ���C���s����zfd}|d�u�rt�j}n2t|t�r0t|d�}d}nt|t�r<ntd|���|�|��|���|rd|� ���W�n:�t y��}�z"t�tjd||f���W�Y�d�}~n d�}~0�0�d�S�)NF�wTzbad file parameter %szcould not write %s: %s) �sys�stdoutr"���r����open�FileTyper%����writerh����closer~���rz���r{���)rg���rr���r ���Z need_to_closer=���r���r���r���� write_xml:��s���� zXmlSerialize.write_xmlc�����������������C���s���|�����\}}|d�u�r|�jj}t�|�}|D�]<}|�j|�}|�dt�}t|�|�} | d�ur*|� ||| ���q*|D��]l}�z"|�jdkr�t }d�} n |�j|�}|�dt �}|�d�} t|�|�} | d�u�s�t| t�r�t | �dkr�W�ql| �rHt�|�}|�|��| D�]P}t|t��r|�|| �} |�| ��q�t�| �}|�|��|||�} |�| ��q�nLt| t��rl| �||�} |�| ��n(t�|�}|�|��||| �} |�| ��W�ql�t�y��}�z(t�tjd|�jj|| f���W�Y�d�}~qld�}~0�0�ql|S�)NZexport_typecastrS���r:���r���z%s.%s value=%s)rp���r`���ra���r)���ZnewNoderR���rL���r*����getattrZsetPropr���r"���r:���r,���ZaddChildr���rq���r~���rz���r{���)rg���r���rr���r9���ro���rs���r0���rl����typecastr'����list_item_name�element_node�itemr7���Zlist_item_noder=���r���r���r���rq���M��sT���� 4zXmlSerialize.get_xml_nodesc�����������������C���s���|�����\}}|�����|d�u�r"|}n&t||�}|d�u�rHtd||���f���t|�D�]n\}}||vrvtd||���f���qP|�j|�}|�dt �} t | t�r�t| t �r�td|���qP|��|| |���qPt|�D��]} | ���}|�jr�| ���}|��||��q�||v�rtd||���f���q�|�j|�}|�dt �} |�d�}|�r�t|�|g��}t| |�} t | t��r�t| t ��r�| D�]}|�| |����qjn| D�]}|�| |�������q�q�t | t��r�t| t ��r�|��|| | ���q�| ���}|��|| |���q�d�S�)Nz+xml child element (%s) not found in node %sz0unknown attribute (%s) found in xml element (%s)Zimport_typecastz-Illegal use of substructure in attribute (%s)z.unknown element (%s) found in xml element (%s)r:���)rp���re���r����KeyErrorr-���r���r���rR���rL���r*���r"���rJ���� issubclassr���r%����__setattr__r ���rY���Z getContentr����r���r8���)rg���Zxml_noderr���r9���ro���rs���r0���r'���rl���r����r����r�����attrZ list_nodesZ list_noder���r���r���rB������sN���� zXmlSerialize.init_from_xml_node)N)N)N)NN)NN)N)N)ra���rb���rc���rA���ri���re���rp���rt���rh���r}���r���r����rq���rB���r���r���r���r���r�������s��� 7r���)Z __future__r����__all__r�����typesr)���rz���Zsetroubleshoot.configr���Zsetroubleshoot.errcodeZsetroubleshoot.utilZsixr���r���r���r���r���r���r���r���r���r ���r���r���r ���r ���r���rJ���r@����objectr���r���r���r���r����<module>���s2��� 5