ó
8Þ	Pc           @   s   d  Z  d Z d d l Td d l m Z m Z d d l m Z d d l m Z m Z d d l m	 Z	 d d l m
 Z
 m Z d d	 l Z e j d
  d k r© e d e ƒ ‚ n  [ y d d l m Z Wn  e k
 râ e d e ƒ ‚ n# Xe e d ƒ re d e ƒ ‚ n  d d l m Z m Z m Z e j Z e j Z y d d	 l Z Wn e k
 r_d „  Z n Xd d	 l Z e j Z [ [ d e j f d „  ƒ  YZ d e j  e j f d „  ƒ  YZ! d „  Z" e# d k rd d	 l$ Z% e" ƒ  Z& e& j' e% j( j j) ƒ  ƒ e& j* e% j( j+ ƒ  ƒ e& j, d ƒ n  d	 S(   s]   
SAX driver for the pyexpat C module.  This driver works with
pyexpat.__version__ == '2.22'.
s   0.20iÿÿÿÿ(   t   *(   t   feature_validationt   feature_namespaces(   t   feature_namespace_prefixes(   t   feature_external_gest   feature_external_pes(   t   feature_string_interning(   t   property_xml_stringt   property_interning_dictNi   t   javas   expat not available in Java(   t   expats   expat not supportedt   ParserCreate(   t	   xmlreadert   saxutilst   handlerc         C   s   |  S(   N(    (   t   o(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   _mkproxy'   s    t   ExpatLocatorc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s¼   Locator for use with the ExpatParser class.

    This uses a weak reference to the parser object to avoid creating
    a circular reference between the parser and the content handler.
    c         C   s   t  | ƒ |  _ d  S(   N(   R   t   _ref(   t   selft   parser(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   __init__6   s    c         C   s&   |  j  } | j d  k r d  S| j j S(   N(   R   t   _parsert   Nonet   ErrorColumnNumber(   R   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   getColumnNumber9   s    	c         C   s&   |  j  } | j d  k r d S| j j S(   Ni   (   R   R   R   t   ErrorLineNumber(   R   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   getLineNumber?   s    	c         C   s&   |  j  } | d  k r d  S| j j ƒ  S(   N(   R   R   t   _sourcet   getPublicId(   R   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR   E   s    	c         C   s&   |  j  } | d  k r d  S| j j ƒ  S(   N(   R   R   R   t   getSystemId(   R   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR   K   s    	(   t   __name__t
   __module__t   __doc__R   R   R   R   R   (    (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR   0   s   				t   ExpatParserc           B   s%  e  Z d  Z d d$ d „ Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  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  RS(%   s$   SAX driver for the pyexpat C module.i    i   i   i   c         C   se   t  j j |  | ƒ t  j ƒ  |  _ d  |  _ | |  _ d  |  _ d |  _	 g  |  _
 d |  _ d  |  _ d  S(   Ni    i   (   R   t   IncrementalParserR   t   InputSourceR   R   R   t   _namespacest   _lex_handler_propt   _parsingt   _entity_stackt   _external_gest
   _interning(   R   t   namespaceHandlingt   bufsize(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR   W   s    						c         C   sO   t  j | ƒ } | |  _ |  j ƒ  |  j j t |  ƒ ƒ t j j	 |  | ƒ d S(   s3   Parse an XML document from a URL or an InputSource.N(
   R   t   prepare_input_sourceR   t   resett   _cont_handlert   setDocumentLocatorR   R   R#   t   parse(   R   t   source(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR1   d   s
    	
c         C   s/   | j  ƒ  d  k	 r+ |  j j | j  ƒ  ƒ n  d  S(   N(   R   R   R   t   SetBase(   R   R2   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   prepareParserm   s    c         C   s-   t  j j |  | ƒ |  j r) |  j ƒ  n  d  S(   N(   R   R#   t   setContentHandlerR'   t   _reset_cont_handler(   R   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR5   s   s    	c         C   sl   | t  k r |  j S| t k r, |  j d  k	 S| t t t f k rE d S| t k rX |  j	 St
 d | ƒ ‚ d  S(   Ni    s   Feature '%s' not recognized(   R   R%   R   R*   R   R   R   R   R   R)   t   SAXNotRecognizedException(   R   t   name(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt
   getFeaturex   s    	c         C   s  |  j  r t d ƒ ‚ n  | t k r0 | |  _ nÐ | t k rH | |  _ n¸ | t k r„ | rx |  j d  k r i  |  _ q q d  |  _ n| | t	 k r¨ | r t d ƒ ‚ q nX | t
 k rÌ | r t d ƒ ‚ q n4 | t k rð | r t d ƒ ‚ q n t d | ƒ ‚ d  S(   Ns!   Cannot set features while parsings!   expat does not support validations/   expat does not read external parameter entitiess(   expat does not report namespace prefixess   Feature '%s' not recognized(   R'   t   SAXNotSupportedExceptionR   R%   R   R)   R   R*   R   R   R   R   R7   (   R   R8   t   state(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt
   setFeature„   s2    	c         C   s   | t  j k r |  j S| t k r) |  j S| t k r{ |  j rl t |  j d ƒ r] |  j j ƒ  St	 d ƒ ‚ q{ t
 d ƒ ‚ n  t	 d | ƒ ‚ d  S(   Nt   GetInputContexts=   This version of expat does not support getting the XML strings.   XML string cannot be returned when not parsings   Property '%s' not recognized(   R   t   property_lexical_handlerR&   R   R*   R   R   t   hasattrR=   R7   R:   (   R   R8   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   getProperty¢   s    	c         C   s|   | t  j k r1 | |  _ |  j rx |  j ƒ  qx nG | t k rI | |  _ n/ | t k rh t d | ƒ ‚ n t	 d | ƒ ‚ d  S(   Ns   Property '%s' cannot be sets   Property '%s' not recognized(
   R   R>   R&   R'   t   _reset_lex_handler_propR   R*   R   R:   R7   (   R   R8   t   value(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   setProperty´   s    		c         C   sŽ   |  j  s, |  j ƒ  d |  _  |  j j ƒ  n  y |  j j | | ƒ WnD t j k
 r‰ } t t j	 | j
 ƒ | |  ƒ } |  j j | ƒ n Xd  S(   Ni   (   R'   R.   R/   t   startDocumentR   t   ParseR
   t   errort   SAXParseExceptiont   ErrorStringt   codet   _err_handlert
   fatalError(   R   t   datat   isFinalt   et   exc(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   feedÄ   s    	
	c         C   sC   |  j  r d  S|  j d d d ƒ|  j j ƒ  d |  _ d  |  _ d  S(   Nt    RM   i   i    (   R(   RP   R/   t   endDocumentR'   R   R   (   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   closeÕ   s    		c         C   s(   |  j  j |  j _ |  j  j |  j _ d  S(   N(   R/   t   processingInstructionR   t   ProcessingInstructionHandlert
   characterst   CharacterDataHandler(   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR6   ß   s    c         C   sŽ   |  j  } |  j } | d  k rN d  | _ d  | _ d  | _ d  | _ d  | _ n< | j | _ | j	 | _ | j
 | _ |  j | _ | j | _ d  S(   N(   R&   R   R   t   CommentHandlert   StartCdataSectionHandlert   EndCdataSectionHandlert   StartDoctypeDeclHandlert   EndDoctypeDeclHandlert   commentt
   startCDATAt   endCDATAt   start_doctype_declt   endDTD(   R   t   lexR   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRA   ä   s    						c         C   sc  |  j  r] t j |  j j ƒ  d d |  j ƒ|  _ d |  j _ |  j |  j _	 |  j
 |  j _ nB t j |  j j ƒ  d |  j ƒ|  _ |  j |  j _	 |  j |  j _ |  j ƒ  |  j |  j _ |  j |  j _ |  j |  j _ |  j |  j _ d  |  _ |  j r|  j ƒ  n  |  j |  j _ y |  j |  j _ Wn t k
 r9n X|  j j  t j! ƒ d |  _" g  |  _# d  S(   Nt    t   interni   i    ($   R%   R
   R   R   t   getEncodingR*   R   t   namespace_prefixest   start_element_nst   StartElementHandlert   end_element_nst   EndElementHandlert   start_elementt   end_elementR6   t   unparsed_entity_declt   UnparsedEntityDeclHandlert   notation_declt   NotationDeclHandlert   start_namespace_declt   StartNamespaceDeclHandlert   end_namespace_declt   EndNamespaceDeclHandlerR   t   _decl_handler_propR&   RA   t   external_entity_reft   ExternalEntityRefHandlert   skipped_entity_handlert   SkippedEntityHandlert   AttributeErrort   SetParamEntityParsingt*   XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONER'   R(   (   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR.   ô   s6    	
			
	c         C   s   |  j  d  k r d  S|  j  j S(   N(   R   R   R   (   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR     s    c         C   s   |  j  d  k r d S|  j  j S(   Ni   (   R   R   R   (   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR      s    c         C   s   |  j  j ƒ  S(   N(   R   R   (   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR   %  s    c         C   s   |  j  j ƒ  S(   N(   R   R   (   R   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR   (  s    c         C   s   |  j  j | t | ƒ ƒ d  S(   N(   R/   t   startElementt   AttributesImpl(   R   R8   t   attrs(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRk   ,  s    c         C   s   |  j  j | ƒ d  S(   N(   R/   t
   endElement(   R   R8   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRl   /  s    c         C   sL  | j  ƒ  } t | ƒ d k r- d  | f } n5 t | ƒ d k rV | d | d f } n t | ƒ } i  } i  } x¸ | j ƒ  D]ª \ } } | j  ƒ  } t | ƒ }	 |	 d k rÀ | }
 d  | f } nQ |	 d k rû d | d | d f }
 | d | d f } n | d }
 t | ƒ } | | | <|
 | | <q{ W|  j j | d  t | | ƒ ƒ d  S(   Ni   i   i    s   %s:%si   (   t   splitt   lenR   t   tuplet   itemsR/   t   startElementNSt   AttributesNSImpl(   R   R8   R   t   pairt   newattrst   qnamest   anameRB   t   partst   lengtht   qnamet   apair(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRg   2  s.    

c         C   sy   | j  ƒ  } t | ƒ d k r- d  | f } n5 t | ƒ d k rV | d | d f } n t | ƒ } |  j j | d  ƒ d  S(   Ni   i   i    (   R   R‚   R   Rƒ   R/   t   endElementNS(   R   R8   R‡   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRi   T  s    c         C   s   |  j  j | | ƒ d  S(   N(   R/   RT   (   R   t   targetRL   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   processing_instruction`  s    c         C   s   |  j  j | ƒ d  S(   N(   R/   RV   (   R   RL   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   character_datad  s    c         C   s   |  j  j | | ƒ d  S(   N(   R/   t   startPrefixMapping(   R   t   prefixt   uri(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRq   g  s    c         C   s   |  j  j | ƒ d  S(   N(   R/   t   endPrefixMapping(   R   R”   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRs   j  s    c         C   s   |  j  j | | | ƒ d  S(   N(   R&   t   startDTD(   R   R8   t   sysidt   pubidt   has_internal_subset(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR`   m  s    c         C   s   |  j  j | | | | ƒ d  S(   N(   t   _dtd_handlert   unparsedEntityDecl(   R   R8   t   baseR˜   R™   t   notation_name(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRm   p  s    c         C   s   |  j  j | | | ƒ d  S(   N(   R›   t   notationDecl(   R   R8   R   R˜   R™   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRo   s  s    c         C   sÆ   |  j  s d S|  j j | | ƒ } t j | |  j j ƒ  p= d ƒ } |  j j |  j	 |  j f ƒ |  j	 j
 | ƒ |  _	 | |  _ y t j j |  | ƒ Wn d SX|  j d \ |  _	 |  _ |  j d =d S(   Ni   RQ   i    iÿÿÿÿ(   R)   t   _ent_handlert   resolveEntityR   R-   R   R   R(   t   appendR   t   ExternalEntityParserCreateR   R#   R1   (   R   t   contextR   R˜   R™   R2   (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRv   v  s     				
c         C   s'   | r d | } n  |  j  j | ƒ d  S(   Nt   %(   R/   t   skippedEntity(   R   R8   t   is_pe(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyRx   Œ  s    i   iìÿ  (!   R   R    R!   R   R1   R4   R5   R9   R<   R@   RC   RP   RS   R6   RA   R.   R   R   R   R   Rk   Rl   Rg   Ri   R‘   R’   Rq   Rs   R`   Rm   Ro   Rv   Rx   (    (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyR"   T   s>   									
			'							"									c          O   s   t  |  | Ž  S(   N(   R"   (   t   argst   kwargs(    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   create_parser”  s    t   __main__s:   http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml(-   R!   t   versiont   xml.sax._exceptionst   xml.sax.handlerR   R   R   R   R   R   R   R   t   syst   platformt   SAXReaderNotAvailableR   t   xml.parsersR
   t   ImportErrorR?   t   xml.saxR   R   R   R~   R†   t   _weakrefR   t   weakreft   proxyt   LocatorR   R#   R"   Rª   R   t   xml.sax.saxutilst   xmlt   pR5   t   saxt   XMLGeneratort   setErrorHandlert   ErrorHandlerR1   (    (    (    s)   /usr/lib/python2.7/xml/sax/expatreader.pyt   <module>   sJ   
			$ÿ A		