관리-도구
편집 파일: sax.cpython-39.pyc
a ������a�$����������������������@���s����d�Z�ddlmZ�ddlmZ�ddlmZ�ddlmZm Z �ddlm Z mZ�G�dd��dej�Z d d ��ZG�dd��de�ZG�d d��de�Zdd��ZdS�)a?�� SAX-based adapter to copy trees from/to the Python standard library. Use the `ElementTreeContentHandler` class to build an ElementTree from SAX events. Use the `ElementTreeProducer` class or the `saxify()` function to fire the SAX events of an ElementTree against a SAX ContentHandler. See https://lxml.de/sax.html �����)�absolute_import)�ContentHandler)�etree)�ElementTree� SubElement)�Comment�ProcessingInstructionc�������������������@���s���e�Zd�ZdZdS�)�SaxErrorzGeneral SAX error. N)�__name__� __module__�__qualname__�__doc__��r���r����./usr/lib64/python3.9/site-packages/lxml/sax.pyr ������s���r ���c�����������������C���s0���|�d�dkr$t�|�dd����dd��S�d�|�fS�d�S�)Nr����{�����})�tuple�split)�tagr���r���r���� _getNsTag���s����r���c�������������������@���s����e�Zd�ZdZd dd�Zdd��Zeeejd�Zdd ��Zd d��Z dd ��Z dd��Zdd��Zdd��Z d!dd�Zdd��Zdd��Zd"dd�Zdd��Zdd��ZeZdS�)#�ElementTreeContentHandlerz/Build an lxml ElementTree from SAX events. Nc�����������������C���sL���t��|���d�|�_g�|�_g�|�_d�|�_d�d�gi|�_i�|�_|d�u�rBtj }||�_ d�S��N)r����__init__�_root�_root_siblings�_element_stack�_default_ns�_ns_mapping� _new_mappingsr���ZElement�_makeelement)�selfZmakeelementr���r���r���r���&���s���� z"ElementTreeContentHandler.__init__c�����������������C���s ���t�|�j�S�)z=Contains the generated ElementTree after parsing is finished.)r���r����r!���r���r���r���� _get_etree2���s����z$ElementTreeContentHandler._get_etree)�docc�����������������C���s���d�S�r���r���)r!���Zlocatorr���r���r����setDocumentLocator8���s����z,ElementTreeContentHandler.setDocumentLocatorc�����������������C���s���d�S�r���r���r"���r���r���r���� startDocument;���s����z'ElementTreeContentHandler.startDocumentc�����������������C���s���d�S�r���r���r"���r���r���r����endDocument>���s����z%ElementTreeContentHandler.endDocumentc�����������������C���sP���||�j�|<�z|�j|��|��W�n�ty<���|g|�j|<�Y�n0�|d�u�rL||�_d�S�r���)r���r����append�KeyErrorr���)r!����prefix�urir���r���r����startPrefixMappingA���s���� z,ElementTreeContentHandler.startPrefixMappingc�����������������C���s(���|�j�|�}|����|d�u�r$|d�|�_d�S��N���)r����popr���)r!���r*���Zns_uri_listr���r���r����endPrefixMappingJ���s���� z*ElementTreeContentHandler.endPrefixMappingc�����������������C���s4���|\}}|rd|�}n|�j�r,d|�j�|f�}n|}|S�)N�{%s}%s)r���)r!���Z ns_name_tuple�ns_uri� local_name�el_tagr���r���r���� _buildTagP���s���� z#ElementTreeContentHandler._buildTagc����������� ������C���s����|���|�}|rli�}z|���}W�n�ty8���|���}Y�n0�|D�]*\}}|d�rXd|�} n|d�} ||| <�q>nd�}|�j} |�jd�u�r�|��|||�j��}|�_|�jr�t |d�r�|�jD�]}|� |��q�|�jd�d��=�nt| d�|||�j�}| �|��|�j� ���d�S�)Nr���r1���r����addpreviousr.���)r5���Z iteritems�AttributeError�itemsr���r���r ���r���r����hasattrr6���r���r(����clear) r!����ns_name�qname� attributesZel_name�attrsZiter_attributesZ name_tuple�valueZ attr_nameZ element_stack�element�siblingr���r���r����startElementNSZ���s4���� � � z(ElementTreeContentHandler.startElementNSc�����������������C���s6���t�||�}|�jd�u�r"|�j�|��n|�jd��|��d�S�r-���)r���r���r���r(���r���)r!����target�dataZpir���r���r����processingInstruction{���s���� z/ElementTreeContentHandler.processingInstructionc�����������������C���s.���|�j����}|��|�}||jkr*td|���d�S�)NzUnexpected element closed: )r���r/���r5���r���r ���)r!���r;���r<���r@���r4���r���r���r����endElementNS����s���� z&ElementTreeContentHandler.endElementNSc�����������������C���s0���|rt�dd��|���D���}|��d�|f||��d�S�)Nc�����������������S���s���g�|�]\}}d�|f|f�qS�r���r���)�.0�k�vr���r���r���� <listcomp>���������z:ElementTreeContentHandler.startElement.<locals>.<listcomp>)�dictr8���rB���)r!����namer=���r���r���r����startElement����s �����z&ElementTreeContentHandler.startElementc�����������������C���s���|���d�|f|��d�S�r���)rF���)r!���rM���r���r���r���� endElement����s����z$ElementTreeContentHandler.endElementc�����������������C���sN���|�j�d�}z|d�}|jpd|�|_W�n"�tyH���|jp<d|�|_Y�n0�d�S�)Nr.�����)r����tail� IndexError�text)r!���rD���Zlast_elementr���r���r���� characters����s���� z$ElementTreeContentHandler.characters)N)N)N)r ���r���r���r ���r���r#����propertyr���r%���r&���r'���r,���r0���r5���rB���rE���rF���rN���rO���rT���ZignorableWhitespacer���r���r���r���r���#���s"��� ! r���c�������������������@���s0���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd S�)�ElementTreeProducerz5Produces SAX events for an element and children. c�����������������C���sR���z|����}W�n�ty"���|}Y�n0�||�_||�_ddlm}�||�_|i�i��|�_d�S�)Nr���)�AttributesNSImpl)Zgetrootr7����_element�_content_handlerZxml.sax.xmlreaderrW����_attr_class�_empty_attributes)r!����element_or_tree�content_handlerr@���Z attr_classr���r���r���r�������s���� zElementTreeProducer.__init__c�����������������C���s����|�j�����|�j}t|d�rjg�}|���}t|dd��tu�rJ|�|��|���}q&|d�d�d��D�]}|��|i���qX|��|i���t|d�r�|� ��}t|dd��tu�r�|��|i���|� ��}q�|�j�� ���d�S�)N�getpreviousr���r.����getnext)rY���r&���rX���r9���r^����getattrr���r(����_recursive_saxifyr_���r'���)r!���r@���ZsiblingsrA���r���r���r����saxify����s"���� zElementTreeProducer.saxifyc�����������������C���s���|�j�}|j}|tu�s|tu�rL|tu�r4|�|j|j��|j}|rH|�|��d�S�|j }g�}||kr�|� ��D�]$\}} |�|�| krf|�|| f��qf|� ��} | r�i�}i�}| D�]8\} }t | �}|||<�|�j|d�|d�|d�dd�||<�q�|��||�}n|�j}t |�\} }|�j| |||jdd�}|D�]\}}|�||���q|�| |f||��|j}|�rX|�|��|D�]}|��||���q\|�| |f|��|D�]\}}|�|���q�|j}|�r�|�|��d�S�)Nr���r���T)�preferred_prefix�is_attributeF)rd���)rY���r���r���r���rE���rC���rS���rQ���rT����nsmapr8����getr(���r����_build_qnamerZ���r[���r*���r,���rB���ra���rF���r0���)r!���r@���Zparent_nsmapr]���r���rQ���Z element_nsmapZnew_prefixesr*���r2���ZattribsZattr_valuesZattr_qnamesZattr_ns_namer?���Z attr_ns_tupleZsax_attributesr3���r<���r+���rS����childr���r���r���ra�������sd����� �� � z%ElementTreeProducer._recursive_saxifyc��������������������sv�����d�u�r|S�|s$|��|���kr$|}n:��fdd�|���D��}t|�dkrN|d�n|rZt|�nd�}|d�u�rj|S�|d�|�S�)Nc��������������������s$���g�|�]\}}|d�ur|��kr|�qS�r���r���)rG���Zpfxr+����r2���r���r���rJ�����s����z4ElementTreeProducer._build_qname.<locals>.<listcomp>r���r����:)rf���r8����len�min)r!���r2���r3���re���rc���rd���r*���Z candidatesr���ri���r���rg�������s���� ��z ElementTreeProducer._build_qnameN)r ���r���r���r ���r���rb���ra���rg���r���r���r���r���rV�������s ���6rV���c�����������������C���s���t�|�|����S�)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )rV���rb���)r\���r]���r���r���r���rb�����s����rb���N)r ���Z __future__r���Zxml.sax.handlerr���Zlxmlr���Z lxml.etreer���r���r���r���Z LxmlErrorr ���r���r����objectrV���rb���r���r���r���r����<module>���s���|s