ó
yÁìVc           @@  s|   d  d l  m Z d  d l m Z d  d l m Z m Z d e f d „  ƒ  YZ d e	 f d „  ƒ  YZ
 d e	 f d	 „  ƒ  YZ d
 S(   i    (   t   absolute_import(   t   contextmanager(   t   Elementt   tostringt   LxmlSyntaxErrorc           B@  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR      s   t   _FakeIncrementalFileWriterc           B@  sP   e  Z d  Z d „  Z e d d d „ ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   s_   Replacement for _IncrementalFileWriter of lxml.
       Uses ElementTree to build xml in memory.c         C@  s(   g  |  _  d  |  _ | |  _ t |  _ d  S(   N(   t   _element_stackt   Nonet   _top_elementt   _filet   Falset
   _have_root(   t   selft   output_file(    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyt   __init__   s    			c         k@  sÁ   t  |  _ | d k r i  } n  t | d | | |  _ d |  j _ d |  j _ |  j j |  j ƒ d V|  j j	 ƒ  } |  j r§ |  j d } | j |  j ƒ | |  _ n |  j
 | ƒ d |  _ d S(   sÁ   Create a new xml element using a context manager.
        The elements are written when the top level context is left.

        This is for code compatibility only as it is quite slow.
        t   attribt    Niÿÿÿÿ(   t   TrueR   R	   R   R
   t   textt   tailR   t   appendt   popt   _write_element(   R   t   tagR   t   nsmapt   _extrat   elt   parent(    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyt   element   s    				c         C@  sµ   t  | t ƒ rm |  j d k r* t ƒ  ‚ n  t |  j ƒ d k rT |  j j | 7_ q± |  j d j | 7_ nD |  j d k	 r |  j j | ƒ n" |  j	 s¨ |  j
 | ƒ n	 t ƒ  ‚ d S(   s   Write a string or subelement.i    iÿÿÿÿN(   t
   isinstancet   strR
   R	   R   t   lenR   R   R   R   R   (   R   t   arg(    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyt   write5   s    	c         C@  s    t  | ƒ } |  j j | ƒ d  S(   N(   R   R   R#   (   R   R   t   xml(    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR   L   s    c         C@  s   d  S(   N(    (   R   (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyt	   __enter__P   s    c         C@  s   |  j  s t ƒ  ‚ n  d  S(   N(   R   R   (   R   t   typet   valuet	   traceback(    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyt   __exit__S   s    	N(   R   R   t   __doc__R   R   R	   R   R#   R   R%   R)   (    (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR      s   				t   xmlfilec           B@  s2   e  Z d  Z e d e d „ Z d „  Z d „  Z RS(   s4   Context manager that can replace lxml.etree.xmlfile.c         C@  sC   t  | t ƒ r- t | d ƒ |  _ t |  _ n | |  _ | |  _ d  S(   Nt   wb(   R   R    t   openR   R   t   _close(   R   R   t   bufferedt   encodingt   close(    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR   [   s
    	c         C@  s   t  |  j ƒ S(   N(   R   R   (   R   (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR%   c   s    c         C@  s#   |  j  t k r |  j j ƒ  n  d  S(   N(   R.   R   R   R1   (   R   R&   R'   R(   (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR)   f   s    N(   R   R   R*   R   R	   R   R%   R)   (    (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyR+   Y   s   	N(   t
   __future__R    t
   contextlibR   t   xml.etree.ElementTreeR   R   t	   ExceptionR   t   objectR   R+   (    (    (    sc   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/et_xmlfile-1.0.1-py2.7.egg/et_xmlfile/xmlfile.pyt   <module>   s
   I