Ñò
ˆùJc        
   @   sü  d  Z  d d k l Z l Z l Z d d k l Z l Z l Z d d k l	 Z	 d d k
 l Z l Z d d k l Z d d k Te i Z e i Z e i Z e i i Z e i i Z e i i Z e i i Z e i ƒ  Z h	 e i e d ƒ d	 6e i e d
 ƒ d 6e i e d ƒ d 6e i e d ƒ d 6e i e d ƒ d 6e i e d ƒ d 6e i e d ƒ d 6e i e d ƒ d 6e i e d ƒ d 6Z d e f d „  ƒ  YZ d „  Z d „  Z  d f  d „  ƒ  YZ! e e e f Z" d  e f d! „  ƒ  YZ# d" e f d# „  ƒ  YZ$ d$ e$ f d% „  ƒ  YZ% d& e$ f d' „  ƒ  YZ& d( Z' d) e' Z( d* e! f d+ „  ƒ  YZ) d, f  d- „  ƒ  YZ* d. e* e! f d/ „  ƒ  YZ+ d0 e* e) f d1 „  ƒ  YZ, d2 e- f d3 „  ƒ  YZ. d4 e! f d5 „  ƒ  YZ/ e0 d6 „ Z1 e0 d7 „ Z2 e0 d8 „ Z3 e0 d9 „ Z4 d: „  Z5 d; S(<   s™   Facility to use the Expat parser to load a minidom instance
from a string or file.

This avoids all the overhead of SAX and pulldom to gain performance.
iÿÿÿÿ(   t
   xmlbuildert   minidomt   Node(   t   EMPTY_NAMESPACEt   EMPTY_PREFIXt   XMLNS_NAMESPACE(   t   expat(   t   _append_childt   _set_attribute_node(   t
   NodeFilter(   t   *t   cdatat   CDATAt   enumerationt   ENUMt   entityt   ENTITYt   entitiest   ENTITIESt   idt   IDt   idreft   IDREFt   idrefst   IDREFSt   nmtokent   NMTOKENt   nmtokenst   NMTOKENSt   ElementInfoc           B   sb   e  Z d Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z RS(   t
   _attr_infot   _modelt   tagNamec         C   s   | |  _  g  |  _ | |  _ d  S(   N(   R    R   R   (   t   selfR    t   model(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   __init__A   s    		c         C   s   |  i  |  i |  i f S(   N(   R   R   R    (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   __getstate__F   s    c         C   s   | \ |  _  |  _ |  _ d  S(   N(   R   R   R    (   R!   t   state(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   __setstate__I   s    c         C   s`   xV |  i  D]K } | d | j o4 | d } | d d j o	 t d St | d Sq
 q
 Wt i S(   Ni   iþÿÿÿi    t   (R   (   R   t   _typeinfo_mapR   t   _no_type(   R!   t   anamet   infot   t(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   getAttributeTypeL   s    
 
	c         C   s   t  i S(   N(   R   R)   (   R!   t   namespaceURIt	   localName(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   getAttributeTypeNSV   s    c         C   s<   |  i  o* |  i  d } | t i i t i i f j St Sd  S(   Ni    (   R   R   R"   t   XML_CTYPE_ANYt   XML_CTYPE_MIXEDt   False(   R!   t   type(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   isElementContentY   s
    
c         C   s*   |  i  o |  i  d t i i j St Sd  S(   Ni    (   R   R   R"   t   XML_CTYPE_EMPTYR3   (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   isEmptya   s    
c         C   s8   x1 |  i  D]& } | d | j o | d d j Sq
 Wt S(   Ni   iþÿÿÿR   (   R   R3   (   R!   R*   R+   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   isIdg   s
    
 c         C   s   |  i  | | f ƒ S(   N(   R8   (   R!   t   eurit   enamet   auriR*   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   isIdNSm   s    (   s
   _attr_infos   _models   tagNameN(   t   __name__t
   __module__t	   __slots__t   NoneR#   R$   R&   R-   R0   R5   R7   R8   R<   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR   >   s   			
				c         C   s   |  i  | | ƒ S(   N(   t   _intern_setdefault(   t   buildert   s(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   _internq   s    c         C   sÍ   d | j p t  ‚ | i d ƒ } |  i } t | ƒ d j oP | \ } } } | | | ƒ } d | | f } | | | ƒ } | | | ƒ } n& | \ } } t } | | | ƒ } } | | | ƒ | | | f S(   Nt    i   s   %s:%s(   t   AssertionErrort   splitRA   t   lenR   (   RB   t   namet   partst   internt   urit	   localnamet   prefixt   qname(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   _parse_ns_namet   s    	t   ExpatBuilderc           B   s  e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sP   Document builder that uses Expat to build a ParsedXML.DOM document
    instance.c         C   s{   | d  j o t i ƒ  } n | |  _ |  i i d  j	 o t |  i i ƒ |  _ n d  |  _ t |  _ d  |  _	 |  i
 ƒ  d  S(   N(   R@   R    t   Optionst   _optionst   filtert   FilterVisibilityControllert   _filterR   t   _finish_start_elementt   _parsert   reset(   R!   t   options(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR#   ‰   s    				c         C   s
   t  i ƒ  S(   s   Create a new parser object.(   R   t   ParserCreate(   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   createParser—   s    c         C   sj   |  i  pY |  i ƒ  |  _  |  i  i i |  _ t |  i  _ t |  i  _ t |  i  _ |  i	 |  i  ƒ n |  i  S(   s7   Return the parser object, creating a new one if needed.(
   RX   R\   RK   t
   setdefaultRA   t   Truet   buffer_textt   ordered_attributest   specified_attributest   install(   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt	   getParser›   s    
c         C   s@   t  i t d d ƒ |  _ |  i |  _ |  i i |  _ t |  _ d S(   s6   Free all data structures used during DOM construction.N(	   t   theDOMImplementationt   createDocumentR   R@   t   documentt   curNodet
   _elem_infoR3   t   _cdata(   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRY   ¦   s
    c         C   së   |  i  | _ |  i | _ |  i | _ |  i | _ |  i i	 o |  i
 | _ n |  i | _ |  i i o |  i | _ n |  i i o( |  i | _ |  i | _ |  i | _ n |  i | _ |  i | _ |  i | _ |  i | _ |  i | _  d S(   s>   Install the callbacks needed to build the DOM into the parser.N(!   t   start_doctype_decl_handlert   StartDoctypeDeclHandlert   first_element_handlert   StartElementHandlert   end_element_handlert   EndElementHandlert
   pi_handlert   ProcessingInstructionHandlerRS   R   t   entity_decl_handlert   EntityDeclHandlert   notation_decl_handlert   NotationDeclHandlert   commentst   comment_handlert   CommentHandlert   cdata_sectionst   start_cdata_section_handlert   StartCdataSectionHandlert   end_cdata_section_handlert   EndCdataSectionHandlert   character_data_handler_cdatat   CharacterDataHandlert   character_data_handlert   external_entity_ref_handlert   ExternalEntityRefHandlert   xml_decl_handlert   XmlDeclHandlert   element_decl_handlert   ElementDeclHandlert   attlist_decl_handlert   AttlistDeclHandler(   R!   t   parser(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRb   ®   s$    c         C   s¸   |  i  ƒ  } t } yp xY | i d ƒ } | p Pn | i | d ƒ | o |  i i o |  i | ƒ n t } q | i d t ƒ Wn t j
 o n X|  i } |  i	 ƒ  d |  _ | S(   sI   Parse a document from a file object, returning the document
        node.i   i   i    t    i @  N(   Rc   R^   t   readt   ParseRf   t   documentElementt   _setup_subsetR3   t   ParseEscapeRY   R@   RX   (   R!   t   fileR‰   t   first_buffert   buffert   doc(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt	   parseFileÅ   s$    		
	c         C   sc   |  i  ƒ  } y! | i | t ƒ |  i | ƒ Wn t j
 o n X|  i } |  i ƒ  d |  _ | S(   s<   Parse a document from a string, returning the document node.N(	   Rc   RŒ   R^   RŽ   R�   Rf   RY   R@   RX   (   R!   t   stringR‰   R“   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   parseStringÛ   s    	
	c         C   sF   |  i  i o5 t ƒ  } | i | ƒ | i ƒ  } | |  i  i _ n d S(   s/   Load the internal subset if there might be one.N(   Rf   t   doctypet   InternalSubsetExtractorR–   t	   getSubsett   internalSubset(   R!   R’   t	   extractort   subset(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRŽ   è   s
    	c         C   s  |  i  i i | | | ƒ } |  i  | _ |  i  i i | ƒ | |  i  _ |  i oT |  i i | ƒ t	 j o; d  |  i  _ |  i  i d =d  } d  |  i _ d  |  i _ n | oT | d  j	 o g  | i _ g  | i _ n d  |  i _ d  |  i _ |  i |  i _ n d  S(   Niÿÿÿÿ(   Rf   t   implementationt   createDocumentTypet   ownerDocumentt
   childNodest   appendR—   RV   t
   acceptNodet   FILTER_REJECTR@   RX   Rs   Ru   R   t   _seqt	   notationsRx   Rq   t   end_doctype_decl_handlert   EndDoctypeDeclHandler(   R!   t   doctypeNamet   systemIdt   publicIdt   has_internal_subsetR—   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRj   ð   s$    #c         C   sT   |  i  i o |  i |  i _ n |  i |  i _ |  i p |  i p t	 |  _
 n d  S(   N(   RS   Rv   Rw   RX   Rx   Rp   Rq   Rh   RV   R   t   _finish_end_element(   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR¦     s
    c         C   s`   |  i  i | | ƒ } t |  i | ƒ |  i o- |  i i | ƒ t j o |  i i | ƒ n d  S(   N(   Rf   t   createProcessingInstructionR   Rg   RV   R¢   R£   t   removeChild(   R!   t   targett   datat   node(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRp     s    #c         C   s  |  i  i } |  i oS |  i o* | d i t j o | d i | ƒ d  S|  i i | ƒ } t	 |  _ n‡ | oK | d i t
 j o7 | d } | i | } | i } | | d <| d <d  St i ƒ  } | i } | | d <| d <|  i | d <t |  i  | ƒ d  S(   NiÿÿÿÿR°   t	   nodeValueRŸ   (   Rg   R    Ri   t   _cdata_continuet   nodeTypet   CDATA_SECTION_NODEt
   appendDataRf   t   createCDATASectionR^   t	   TEXT_NODER°   t   __dict__R   t   TextR   (   R!   R°   R    R±   t   valuet   d(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR~     s&    


		c         C   s§   |  i  i } | oE | d i t j o1 | d } | i } | i | | d <| d <d  St i ƒ  } | i } | i | | d <| d <|  i | d <t	 |  i  | ƒ d  S(   NiÿÿÿÿR°   R²   RŸ   (
   Rg   R    R´   R¸   R¹   R°   R   Rº   Rf   R   (   R!   R°   R    R±   R¼   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR€   (  s    
		c   
      C   sÃ   | o d  S|  i  i p d  S|  i i | | | | ƒ } | d  j	 o& |  i i | ƒ }	 | i i |	 ƒ n |  i i i i	 i | ƒ |  i
 o0 |  i
 i | ƒ t j o |  i i i i	 d =n d  S(   Niÿÿÿÿ(   RS   R   Rf   t   _create_entityR@   t   createTextNodeR    R¡   R—   R¤   RV   R¢   R£   (
   R!   t
   entityNamet   is_parameter_entityR»   t   baseR©   Rª   t   notationNameR±   t   child(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRr   5  s    #c         C   so   |  i  i | | | ƒ } |  i  i i i i | ƒ |  i o0 |  i i | ƒ t j o |  i  i i i d =n d  S(   Niÿÿÿÿ(	   Rf   t   _create_notationR—   R¥   R¤   R¡   RV   R¢   t   FILTER_ACCEPT(   R!   RÂ   RÁ   R©   Rª   R±   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRt   G  s    #c         C   s]   |  i  i | ƒ } t |  i | ƒ |  i o- |  i i | ƒ t j o |  i i | ƒ n d  S(   N(   Rf   t   createCommentR   Rg   RV   R¢   R£   R®   (   R!   R°   R±   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRw   M  s    #c         C   s   t  |  _ t |  _ d  S(   N(   R^   Ri   R3   R³   (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRz   S  s    	c         C   s   t  |  _ t  |  _ d  S(   N(   R3   Ri   R³   (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR|   W  s    	c         C   s   d S(   Ni   (    (   R!   t   contextRÁ   R©   Rª   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR�   [  s    c         C   sN   |  i  d  j o |  i o t |  _ n |  i |  i ƒ  _ |  i | | ƒ d  S(   N(   RV   R@   Rh   R   R¬   t   start_element_handlerRc   Rm   (   R!   RI   t
   attributes(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRl   ^  s    c         C   s  |  i  i | ƒ } t |  i | ƒ | |  _ | o¨ x¥ t d t | ƒ d ƒ D]‡ } t i | | t d  t
 ƒ } | | d } | i d i } | | d <| d <| i } | | d <| d <|  i  | d <t | | ƒ qK Wn | |  i  i j	 o |  i | ƒ n d  S(   Ni    i   i   R°   R²   R»   RŸ   (   Rf   t   createElementR   Rg   t   rangeRH   R   t   AttrR   R@   R   R    R¹   R   R�   RW   (   R!   RI   RÉ   R±   t   it   aR»   R¼   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÈ   d  s"    	 	c         C   sœ   |  i  oŽ | |  i i j o d  S|  i  i | ƒ } | t j o t |  ƒ n  | t j o t |  ƒ n d  S| i |  _	 | i i
 | ƒ | i ƒ  n d  S(   N(   RV   Rf   R�   t   startContainerR£   t   Rejectert   FILTER_SKIPt   Skippert
   parentNodeRg   R®   t   unlink(   R!   R±   t   filt(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRW   x  s    
c         C   s&   |  i  } | i |  _  |  i | ƒ d  S(   N(   Rg   RÓ   R¬   (   R!   RI   Rg   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRn   �  s    	c         C   s‘   |  i  i | i ƒ } | o |  i | | ƒ n |  i oS | |  i i j o d  S|  i i | ƒ t j o |  i	 i
 | ƒ | i ƒ  q� n d  S(   N(   Rh   t   getR    t   _handle_white_text_nodesRV   Rf   R�   R¢   R£   Rg   R®   RÔ   (   R!   Rg   R+   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR¬   ”  s    
c         C   sŽ   |  i  i p | i ƒ  o d  Sg  } xC | i D]8 } | i t j o" | i i ƒ  o | i | ƒ q0 q0 Wx | D] } | i	 | ƒ qs Wd  S(   N(
   RS   t   whitespace_in_element_contentR5   R    R´   R¸   R°   t   stripR¡   R®   (   R!   R±   R+   t   LRÃ   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR×   Ÿ  s    
 ! c         C   s]   |  i  i | ƒ } | d  j o t | | ƒ |  i  | <n! | i d  j p t ‚ | | _ d  S(   N(   Rh   RÖ   R@   R   R   RF   (   R!   RI   R"   R+   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR…   °  s
    c      	   C   sh   |  i  i | ƒ } | d  j o t | ƒ } | |  i  | <n | i i d  | d  d  | d | | g ƒ d  S(   Ni    (   Rh   RÖ   R@   R   R   R¡   (   R!   t   elemRI   R4   t   defaultt   requiredR+   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR‡   ¸  s    	c         C   sP   | |  i  _ | |  i  _ | d j o' | o t |  i  _ qL t |  i  _ n d  S(   Ni    (   Rf   t   versiont   encodingR^   t
   standaloneR3   (   R!   RÞ   Rß   Rà   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRƒ   À  s    N(    R=   R>   t   __doc__R@   R#   R\   Rc   RY   Rb   R”   R–   RŽ   Rj   R¦   Rp   R~   R€   Rr   Rt   Rw   Rz   R|   R�   Rl   RÈ   RW   Rn   R¬   R×   R…   R‡   Rƒ   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRQ   …   s:   																										RU   c           B   sÑ   e  Z d  Z d Z d „  Z d „  Z d „  Z h e i e	 i
 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i 6e i e	 i  6Z! RS(   so   Wrapper around a DOMBuilderFilter which implements the checks
    to make the whatToShow filter attribute work.RT   c         C   s   | |  _  d  S(   N(   RT   (   R!   RT   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR#   Õ  s    c         C   s{   |  i  | i } |  i i | @oR |  i i | ƒ } | t j o
 t ‚ n | t j o t d t	 | ƒ ‚ n | St
 Sd  S(   Ns)   startContainer() returned illegal value: (   t   _nodetype_maskR´   RT   t
   whatToShowRÏ   t   FILTER_INTERRUPTR�   t   _ALLOWED_FILTER_RETURNSt
   ValueErrort   reprRÅ   (   R!   R±   t   maskt   val(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÏ   Ø  s    
c         C   s¸   |  i  | i } |  i i | @o� |  i i | ƒ } | t j o
 t ‚ n | t j o0 | i } x | i	 D] } | i
 | ƒ qk Wt S| t j o t d t | ƒ ‚ n | St Sd  S(   Ns%   acceptNode() returned illegal value: (   Râ   R´   RT   Rã   R¢   Rä   R�   RÑ   RÓ   R    t   appendChildR£   Rå   Ræ   Rç   RÅ   (   R!   R±   Rè   Ré   t   parentRÃ   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR¢   å  s     
	 (   s   filter("   R=   R>   Rá   R?   R#   RÏ   R¢   R	   t   SHOW_ELEMENTR   t   ELEMENT_NODEt   SHOW_ATTRIBUTEt   ATTRIBUTE_NODEt	   SHOW_TEXTR¸   t   SHOW_CDATA_SECTIONRµ   t   SHOW_ENTITY_REFERENCEt   ENTITY_REFERENCE_NODEt   SHOW_ENTITYt   ENTITY_NODEt   SHOW_PROCESSING_INSTRUCTIONt   PROCESSING_INSTRUCTION_NODEt   SHOW_COMMENTt   COMMENT_NODEt   SHOW_DOCUMENTt   DOCUMENT_NODEt   SHOW_DOCUMENT_TYPEt   DOCUMENT_TYPE_NODEt   SHOW_DOCUMENT_FRAGMENTt   DOCUMENT_FRAGMENT_NODEt   SHOW_NOTATIONt   NOTATION_NODERâ   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRU   Ï  s$   			t   FilterCrutchc           B   s   e  Z d Z d „  Z RS(   t   _buildert   _levelt
   _old_startt   _old_endc         C   sO   d |  _  | |  _ | i } | i |  _ | i |  _ |  i | _ |  i | _ d  S(   Ni    (	   R  R  RX   Rm   R  Ro   R  RÈ   Rn   (   R!   RB   R‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR#     s    			(   s   _builders   _levels
   _old_starts   _old_end(   R=   R>   R?   R#   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR  	  s   RÐ   c           B   s)   e  Z d Z d  „  Z d „  Z d „  Z RS(   c         C   s>   t  i |  | ƒ | i } x d D] } t | | d  ƒ q  Wd  S(   NRq   Rx   R   R{   R}   R‚   (   s   ProcessingInstructionHandlers   CommentHandlers   CharacterDataHandlers   StartCdataSectionHandlers   EndCdataSectionHandlers   ExternalEntityRefHandler(   R  R#   RX   t   setattrR@   (   R!   RB   R‰   RI   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR#     s    	     c         G   s   |  i  d |  _  d  S(   Ni   (   R  (   R!   t   args(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÈ   $  s    c         G   s\   |  i  d j o8 |  i i } |  i i | ƒ |  i | _ |  i | _ n |  i  d |  _  d  S(   Ni    i   (   R  R  RX   Rb   R  Rm   R  Ro   (   R!   R  R‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRn   '  s    (    (   R=   R>   R?   R#   RÈ   Rn   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÐ     s   		RÒ   c           B   s    e  Z d Z d  „  Z d „  Z RS(   c         G   sD   |  i  i } |  i | Œ  |  i  i | j	 o |  i d |  _ n d  S(   Ni   (   R  Rg   R  R  (   R!   R  R±   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÈ   4  s    c         G   sb   |  i  d j o1 |  i |  i i _ |  i |  i i _ d  |  _ n |  i  d |  _  |  i | Œ  d  S(   Ni    i   (   R  R  R  RX   Rm   R  Ro   R@   (   R!   R  (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRn   :  s    (    (   R=   R>   R?   RÈ   Rn   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÒ   1  s   	s8   http://xml.python.org/entities/fragment-builder/internalsŠ   <!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>t   FragmentBuilderc           B   sP   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   sñ   Builder which constructs document fragments given XML source
    text and a context node.

    The context node is expected to provide information about the
    namespace declarations which are in scope at the start of the
    fragment.
    c         C   sO   | i  t j o | |  _ | |  _ n | i |  _ | |  _ t i |  | ƒ d  S(   N(   R´   Rû   t   originalDocumentRÇ   RŸ   RQ   R#   (   R!   RÇ   RZ   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR#   b  s    		c         C   s   t  i |  ƒ d  |  _ d  S(   N(   RQ   RY   R@   t   fragment(   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRY   k  s    c         C   s   |  i  | i ƒ  ƒ S(   sR   Parse a document fragment from a file object, returning the
        fragment node.(   R–   R‹   (   R!   R�   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR”   o  s    c   	      C   sî   | |  _  |  i ƒ  } |  i i } d } | oY | i p
 |  i ƒ  } | i o d | i | i f } q� | i o d | i } q� n d } |  i ƒ  } t	 | | | f } y | i
 | d ƒ Wn |  i ƒ  ‚  n X|  i } |  i ƒ  | S(   sM   Parse a document fragment from a string, returning the
        fragment node.RŠ   s   PUBLIC "%s" "%s"s   SYSTEM "%s"i   (   t   _sourceRc   R
  R—   Rš   t   _getDeclarationsRª   R©   t   _getNSattrst   _FRAGMENT_BUILDER_TEMPLATERŒ   RY   R  (	   R!   R•   R‰   R—   t   identRœ   t   nsattrsRf   R  (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR–   t  s,    	


	
c         C   s•  |  i  i i } d } | ouxŽ t | i i ƒ D]z } | i i | ƒ } | o | d } n d | | i f } | i o d | | i | i	 f } q/ d | | i	 f } q/ Wxá t | i
 i ƒ D]É } | i
 i | ƒ } | o | d } n d | | i f } | i o d | | i | i	 f } n8 | i	 o d | | i	 f } n d	 | | i i f } | i o d
 | | i f } n | d } qÀ Wn | S(   s    Re-create the internal subset from the DocumentType node.

        This is only needed if we don't already have the
        internalSubset as a string.
        RŠ   s   
  s   %s<!NOTATION %ss!   %s PUBLIC "%s"
             "%s">s   %s SYSTEM "%s">s   %s<!ENTITY %ss    %s PUBLIC "%s"
             "%s"s   %s SYSTEM "%s"s   %s "%s"s   %s NOTATION %st   >(   RÇ   RŸ   R—   RË   R¥   t   lengtht   itemt   nodeNameRª   R©   R   t
   firstChildR°   RÂ   (   R!   R—   RC   RÍ   t   notationR   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR  �  s:     
 


c         C   s   d S(   NRŠ   (    (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR  ´  s    c         C   s³   | t  j o‰ |  i } |  i } |  i i | ƒ } |  i |  _ |  i i ƒ  |  _ |  i |  _ z | i |  i	 d ƒ Wd  | |  _ | |  _ d  |  _	 Xd St i |  | | | | ƒ Sd  S(   Ni   iÿÿÿÿ(   t$   _FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDRf   Rg   RX   t   ExternalEntityParserCreateR
  t   createDocumentFragmentR  RŒ   R  R@   RQ   R�   (   R!   RÇ   RÁ   R©   Rª   t   old_documentt   old_cur_nodeR‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR�   ·  s    				
N(   R=   R>   Rá   R@   R#   RY   R”   R–   R  R  R�   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR	  Y  s   					$	t
   Namespacesc           B   sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s7   Mix-in class for builders; adds support for namespaces.c         C   s   g  |  _  d  S(   N(   t   _ns_ordered_prefixes(   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   _initNamespacesÑ  s    c         C   s   t  i d d ƒ } t | _ | S(   s'   Create a new namespace-handling parser.t   namespace_separatorRE   (   R   R[   R^   t   namespace_prefixes(   R!   R‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR\   Ö  s    	c         C   s1   t  i |  | ƒ |  i i o |  i | _ n d S(   s.   Insert the namespace-handlers onto the parser.N(   RQ   Rb   RS   t   namespace_declarationst   start_namespace_decl_handlert   StartNamespaceDeclHandler(   R!   R‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRb   Ü  s    c         C   s   |  i  i | | f ƒ d S(   s/   Push this namespace declaration on our storage.N(   R  R¡   (   R!   RN   RL   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR#  ã  s    c         C   s�  d | j o t  |  | ƒ \ } } } } n t } | } d  } t } t i | | | | ƒ } |  i | _ t |  i	 | ƒ | |  _	 |  i
 oÄ x¶ |  i
 D]« \ } } | o) t i t |  d | ƒ t | d ƒ } n t i d t d t ƒ } | i d i }	 | |	 d <|	 d <| i }	 | |	 d <|	 d <|  i |	 d <t | | ƒ q• W|  i
 2n | o5| i }
 | i } x t d t | ƒ d	 ƒ D]} | | } | | d
 } d | j oQ t  |  | ƒ \ } } } } t i | | | | ƒ } | |
 | <| | | | f <n3 t i | t | t ƒ } | |
 | <| | t | f <| i d i }	 | |	 d <|	 d <| i }	 |  i |	 d <| |	 d <|	 d <| |	 d <q�Wn d  S(   NRE   s   xmlns:t   xmlnsi    R°   R²   R»   RŸ   i   i   t   ownerElement(   RP   R   R@   R   R   t   ElementRf   RŸ   R   Rg   R  RÌ   RD   R   R    R¹   R   t   _attrst   _attrsNSRË   RH   (   R!   RI   RÉ   RL   RM   RN   RO   R±   RÎ   R¼   R(  R)  RÍ   R*   R»   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÈ   ç  s^    	

 			 


	c         C   sÀ   |  i  } d | j oY t |  | ƒ \ } } } } | i | j o  | i | j o | i | j p
 t d ‚ n5 | i | j p
 t d ‚ | i t j p
 t d ‚ | i |  _  |  i	 | ƒ d  S(   NRE   s$   element stack messed up! (namespace)s&   element stack messed up - bad nodeNames*   element stack messed up - bad namespaceURI(
   Rg   RP   R.   R/   RN   RF   R  R   RÓ   R¬   (   R!   RI   Rg   RL   RM   RN   RO   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRn   !  s    	(	   R=   R>   Rá   R  R\   Rb   R#  RÈ   Rn   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR  Î  s   					:t   ExpatBuilderNSc           B   s   e  Z d  Z d „  Z RS(   s*   Document builder that supports namespaces.c         C   s   t  i |  ƒ |  i ƒ  d  S(   N(   RQ   RY   R  (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRY   5  s    (   R=   R>   Rá   RY   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR*  2  s   t   FragmentBuilderNSc           B   s    e  Z d  Z d „  Z d „  Z RS(   s*   Fragment builder that supports namespaces.c         C   s   t  i |  ƒ |  i ƒ  d  S(   N(   R	  RY   R  (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRY   =  s    c         C   sÏ   d } |  i  } g  } x³ | o« t | d ƒ oŽ x‹ | i i ƒ  D]v \ } } | | j o q? n | i | ƒ | o d | } n d } | o d | | | f } q? d | | f } q? Wn | i } q W| S(   sN   Return string of namespace attributes from this element and
        ancestors.RŠ   t   _ns_prefix_uris   xmlns:R%  s   %s
    %s='%s's    %s='%s'(   RÇ   t   hasattrR,  t   itemsR¡   RÓ   (   R!   t   attrsRÇ   RÚ   RN   RL   t   declname(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR  A  s&    	  (   R=   R>   Rá   RY   R  (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR+  :  s   	R�   c           B   s   e  Z d  Z RS(   sE   Exception raised to short-circuit parsing in InternalSubsetExtractor.(   R=   R>   Rá   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR�   _  s   R˜   c           B   sS   e  Z d  Z d Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(	   sB   XML processor which can rip out the internal document type subset.c         C   s   |  i  S(   s'   Return the internal subset as a string.(   Rœ   (   R!   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR™   h  s    c         C   s.   y t  i |  | ƒ Wn t j
 o n Xd  S(   N(   RQ   R”   R�   (   R!   R�   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR”   l  s    c         C   s.   y t  i |  | ƒ Wn t j
 o n Xd  S(   N(   RQ   R–   R�   (   R!   R•   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR–   r  s    c         C   s   |  i  | _ |  i | _ d  S(   N(   Rj   Rk   RÈ   Rm   (   R!   R‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRb   x  s    c         C   sH   | o4 |  i  ƒ  } g  |  _ |  i i | _ |  i | _ n
 t ƒ  ‚ d  S(   N(   Rc   Rœ   R¡   t   DefaultHandlerR¦   R§   R�   (   R!   RI   Rª   R©   R«   R‰   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRj   |  s    	c         C   s@   d i  |  i ƒ i d d ƒ i d d ƒ } | |  _ t ƒ  ‚ d  S(   NRŠ   s   
s   
s   (   t   joinRœ   t   replaceR�   (   R!   RC   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR¦   †  s    *	c         C   s   t  ƒ  ‚ d  S(   N(   R�   (   R!   RI   R/  (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyRÈ   ‹  s    N(   R=   R>   Rá   R@   Rœ   R™   R”   R–   Rb   Rj   R¦   RÈ   (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR˜   c  s   					
	c         C   st   | o t  ƒ  } n
 t ƒ  } t |  t ƒ o4 t |  d ƒ } z | i | ƒ } Wd | i ƒ  Xn | i |  ƒ } | S(   s{   Parse a document, returning the resulting Document node.

    'file' may be either a file name or an open file object.
    t   rbN(   R*  RQ   t
   isinstancet   StringTypest   openR”   t   close(   R�   t
   namespacesRB   t   fpt   result(    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   parse�  s    	c         C   s*   | o t  ƒ  } n
 t ƒ  } | i |  ƒ S(   sO   Parse a document from a string, returning the resulting
    Document node.
    (   R*  RQ   R–   (   R•   R9  RB   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyR–   ¤  s    	c         C   sz   | o t  | ƒ } n t | ƒ } t |  t ƒ o4 t |  d ƒ } z | i | ƒ } Wd | i ƒ  Xn | i |  ƒ } | S(   sì   Parse a fragment of a document, given the context from which it
    was originally extracted.  context should be the parent of the
    node(s) which are in the fragment.

    'file' may be either a file name or an open file object.
    R4  N(   R+  R	  R5  R6  R7  R”   R8  (   R�   RÇ   R9  RB   R:  R;  (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   parseFragment¯  s    c         C   s0   | o t  | ƒ } n t | ƒ } | i |  ƒ S(   s¼   Parse a fragment of a document from a string, given the context
    from which it was originally extracted.  context should be the
    parent of the node(s) which are in the fragment.
    (   R+  R	  R–   (   R•   RÇ   R9  RB   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   parseFragmentStringÆ  s    c         C   s#   |  i  o t |  ƒ St |  ƒ Sd S(   s,   Create a builder based on an Options object.N(   R9  R*  RQ   (   RZ   (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   makeBuilderÒ  s    
N(6   Rá   t   xml.domR    R   R   R   R   R   t   xml.parsersR   t   xml.dom.minidomR   R   t   xml.dom.NodeFilterR	   t   xml.dom.minicompatR¸   Rµ   Rû   t   DOMBuilderFilterRÅ   R£   RÑ   Rä   t   getDOMImplementationRd   t   TypeInfoR@   R(   t   objectR   RD   RP   RQ   Rå   RU   R  RÐ   RÒ   R  R  R	  R  R*  R+  t	   ExceptionR�   R˜   R^   R<  R–   R=  R>  R?  (    (    (    s*   scripts/common/Lib/xml/dom/expatbuilder.pyt   <module>   s`   
			3		ÿ I:ud%,