ó
Y7Uc           @   s  d  d l  Z  d  d l Z  d  d l Z d  d l Z d  d l Z d  d l Z y d  d l Z Wn  e k
 rz d  d l j	 Z n Xy d  d l
 m Z Wn d  d l m Z n Xd „  Z e e d d ƒ d k pß e e d d ƒ d k	 Z e j d d k Z y d  d	 l m Z Wn? e k
 rJy d  d	 l m Z WqKe k
 rFd Z qKXn Xe e d
 ƒ rle e j ƒ Z n d; Z y d  d l m Z Wn; e k
 rÃy d  d l Z WqÄe k
 r¿d Z qÄXn Xe e d
 ƒ råe e j ƒ Z n d< Z d „  Z y, d  d l Z e j e j e j e j  Wn# e e! f k
 rEd  d l" Z n Xy e# Wn e$ k
 rjd „  Z# n Xe# e% ƒ  d <y e& Wn e$ k
 rœd „  Z& n Xe& e% ƒ  d <y d  d l' Z' Wn' e k
 rãd e( f d „  ƒ  YZ) n Xe' j* j) Z) d d „ Z+ d  d l, m- Z- e j d d k rœd  d l. m/ Z0 d d „ Z1 d d „ Z2 d  d l, m3 Z4 d „  Z3 e j ƒ  Z5 e j6 d ƒ j7 Z8 e j6 d ƒ j7 Z9 d „  Z: n‰ d  d l; m0 Z0 d d  „ Z1 d d! „ Z2 d  d l, m3 Z3 e j ƒ  Z5 e j6 d" e j< ƒ j7 Z= e j6 d# ƒ j7 Z9 e j6 d$ ƒ j7 Z> d% „  Z: y e j? Z? Wn& e! k
 rZd& „  d' „  d( „ Z? n Xd) e j@ f d* „  ƒ  YZA d+ d= d, „  ƒ  YZB d- d> d. „  ƒ  YZC d/ eC f d0 „  ƒ  YZD d1 „  ZE d2 „  ZF d3 „  ZG d4 d5 „ ZH d6 d7 „ ZI d4 d8 „ ZJ d9 „  ZK d: „  ZL d S(?   iÿÿÿÿN(   t   pathname2urlc         C   se   g  } xR t  j d |  ƒ D]> } y | j t | ƒ ƒ Wq t k
 rV | j | ƒ q Xq Wt | ƒ S(   Ns   ([0-9]+|[^0-9.]+)(   t   ret   findallt   appendt   intt
   ValueErrort   tuple(   t   version_stringt   lt   part(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   make_version_tuple   s    t   implementationt   pypyt   pypy_version_infoi    i   (   t   ElementTreet   VERSION(   t   cElementTreec         C   s[   | j  } d „  } xB t |  ƒ D]4 } | | d ƒ } | | k r t |  | | ƒ q q Wd S(   sG   Remove test methods that do not work with the current lib version.
    c         S   s   d  S(   N(    (   t   self(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   dummy_test_method?   s    i    N(   i    i    i    (   t   gett   dirt   setattr(   t
   test_classt   version_dictt   current_versiont   find_required_versionR   t   namet   expected_version(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   filter_by_version;   s    		c         K   s   t  |  ƒ }  |  j |   |  S(   N(   t   listt   sort(   t   seqt   kwargs(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   sortedT   s    R!   c         C   s
   |  j  ƒ  S(   N(   t   next(   t   it(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR"   _   s    R"   t   skipifc           B   s    e  Z d  Z d „  Z d „  Z RS(   sN   Using a class because a function would bind into a method when used in classesc         G   s   d  S(   N(    (   R   t   args(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   __init__j   s    c         G   s   | S(   N(    (   R   t   funcR%   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   __call__k   s    (   t   __name__t
   __module__t   __doc__R&   R(   (    (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR$   h   s   	i   c         C   sT   t  j t  j | ƒ j d } t j j t j j t j j t	 | d d ƒ ƒ |  ƒ ƒ S(   NR)   t   __file__t    (
   t   syst   modulest	   _getframet	   f_globalst   ost   patht   normpatht   joint   dirnamet   getattr(   t   filenamet   frame_deptht   module(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   _get_caller_relative_patho   s    (   t   StringIO(   t   strs   UTF-8c         C   s   |  S(   N(    (   t   st   encoding(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   _stry   s    c         C   s   |  j  | ƒ S(   N(   t   encode(   R>   R?   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   _bytes{   s    (   t   BytesIOc          G   s<   |  r2 t  |  d t ƒ r2 |  d j d ƒ f }  n  t |  Œ  S(   Ni    s   UTF-8(   t
   isinstanceR=   RA   t   _BytesIO(   R%   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRC   ~   s    s   (\s+)u(["\'])s   (.*except [^(]*),\s*(.*:)c         C   sd   t  |  ƒ }  t |  ƒ } t d | ƒ } t d | ƒ } t j t j | i  t j	 j
 |  ƒ |  d ƒ ƒ S(   Ns   \1\2s   \1 as \2i    (   R;   t	   read_filet   _fix_unicodet   _fix_exceptionst   doctestt   DocTestCaset   doctest_parsert   get_doctestR2   R3   t   basename(   R8   t   doctests(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   make_doctest†   s    (   t   unicodec         C   s   t  |  d | ƒS(   NR?   (   RP   (   R>   R?   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR@   ‘   s    c         C   s   |  S(   N(    (   R>   R?   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRB   “   s    s1   ^(\s*)(?:\w+\.)+(\w*(?:Error|Exception|Invalid):)s   (.*except [^(]*)\s+as\s+(.*:)s   (\s+)b(["\'])c         C   ss   t  |  ƒ }  t |  ƒ } t d | ƒ } t d | ƒ } t d | ƒ } t j t j | i  t	 j
 j |  ƒ |  d ƒ ƒ S(   Ns   \1\2s   \1, \2i    (   R;   RF   t   _fix_tracebackRH   t
   _fix_bytesRI   RJ   RK   RL   R2   R3   RM   (   R8   RN   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRO   ›   s    c         C   s   d  S(   N(   t   None(   t   test_method(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   <lambda>©   s    c         C   s   |  S(   N(    (   RT   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRU   ª   s    c         C   s   |  r
 | S| S(   N(    (   t	   conditiont   whyt   _skipt   _keep(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   skipIf¨   s    t   HelperTestCasec           B   sT   e  Z d  „  Z d d „ Z d „  Z y e j j Wn e	 k
 rQ e j j
 Z n XRS(   c         C   s   t  j ƒ  d  S(   N(   t   gct   collect(   R   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   tearDown±   s    c         C   s:   t  | t ƒ r t | ƒ n	 t | ƒ } t j | d | ƒS(   Nt   parser(   RD   t   bytesRC   R<   t   etreet   parse(   R   t   textR_   t   f(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRb   ´   s    'c         C   sC   t  j | j ƒ  ƒ j t d ƒ t d ƒ ƒ j t d ƒ t d ƒ ƒ S(   Nt    R-   s   
(   Ra   t   tostringt   getroott   replaceRB   (   R   t   tree(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   _rootstring¸   s    N(   R)   R*   R^   RS   Rb   Rj   t   unittestt   TestCaset   assertFalset   AttributeErrort   failIf(    (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR[   °   s   		t   SillyFileLikec           B   s&   e  Z e d  ƒ d „ Z d d „ Z RS(   s   <foo><bar/></foo>c         C   s   | |  _  d  S(   N(   t   xml_data(   R   Rq   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR&   Ä   s    c         C   sU   |  j  rK | r/ |  j  |  } |  j  | |  _  n |  j  } t d ƒ |  _  | St d ƒ S(   NR-   (   Rq   RB   (   R   t   amountt   data(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   readÇ   s    		N(   R)   R*   RB   R&   RS   Rt   (    (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRp   Ã   s   t   LargeFileLikec           B   s/   e  Z d  d d d „ Z d „  Z d d „ Z RS(   id   i   i   c         C   sD   t  ƒ  |  _ t d ƒ | |  _ t | ƒ |  _ |  j | ƒ |  _ d  S(   Nt   a(   RC   Rs   RB   t   charst   ranget   childrent   iterelementst   more(   R   t   charlent   depthRy   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR&   Ó   s    c         c   sv   t  d ƒ V| d 8} | d k r_ xC |  j D]- } x |  j | ƒ D] } | VqA W|  j Vq+ Wn |  j Vt  d ƒ Vd  S(   Ns   <root>i   i    s   </root>(   RB   Ry   Rz   Rw   (   R   R}   t   childt   element(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRz   Ù   s    
	c         C   sµ   |  j  } | j } | rO xR |  j D]& } | | ƒ | j ƒ  | k r" Pq" q" Wn x |  j D] } | | ƒ qY W| j ƒ  } | j d ƒ | j ƒ  | r± | | | ƒ | |  } n  | S(   Ni    (   Rs   t   writeR{   t   tellt   getvaluet   seekt   truncate(   R   Rr   Rs   R   R   t   result(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRt   å   s     		

N(   R)   R*   R&   Rz   RS   Rt   (    (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRu   Ò   s   	t   LargeFileLikeUnicodec           B   s#   e  Z d  d d d „ Z d „  Z RS(   id   i   i   c         C   sK   t  j |  | | | ƒ t ƒ  |  _ t d ƒ | |  _ |  j | ƒ |  _ d  S(   NRv   (   Ru   R&   R<   Rs   R@   Rw   Rz   R{   (   R   R|   R}   Ry   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR&   ù   s    c         c   sv   t  d ƒ V| d 8} | d k r_ xC |  j D]- } x |  j | ƒ D] } | VqA W|  j Vq+ Wn |  j Vt  d ƒ Vd  S(   Ns   <root>i   i    s   </root>(   R@   Ry   Rz   Rw   (   R   R}   R~   R   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRz   ÿ   s    
	(   R)   R*   R&   Rz   (    (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyR†   ø   s   c         C   s%   t  j j t ƒ } t  j j | |  ƒ S(   N(   R2   R3   R6   R,   R5   (   R   t   _testdir(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   fileInTestDir  s    c         C   s   t  j d t |  ƒ ƒ S(   Ns   file:(   t   urlparset   urljoinR    (   R3   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   path2url  s    c         C   s   t  t |  ƒ ƒ S(   N(   R‹   Rˆ   (   R   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   fileUrlInTestDir  s    t   rc         C   s1   t  |  | ƒ } z | j ƒ  } Wd  | j ƒ  X| S(   N(   t   openRt   t   close(   R   t   modeRd   Rs   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyRF     s
    t   wc         C   s4   t  |  | ƒ } z | j | ƒ } Wd  | j ƒ  Xd  S(   N(   RŽ   R€   R   (   R   Rs   R   Rd   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   write_to_file  s    c         C   s   t  t |  ƒ | ƒ S(   N(   RF   Rˆ   (   R   R   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   readFileInTestDir%  s    c         C   sP   t  j t |  t ƒ r! t |  ƒ n	 t |  ƒ ƒ } t ƒ  } | j | ƒ | j ƒ  S(   N(   Ra   Rb   RD   R`   RC   R<   t
   write_c14nR‚   (   t   xmlRi   Rd   (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   canonicalize(  s    0	c         C   sE   x> t  j d |  ƒ D]* \ } } |  j | t t | ƒ ƒ ƒ }  q W|  S(   Ns   (&#([0-9]+);)(   R   R   Rh   t   unichrR   (   R•   t   entity_namet   value(    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt
   unentitify.  s    "(   i    i    i    (   i    i    i    (    (    (M   R2   t   os.pathR   R\   R.   Rk   R‰   t   ImportErrort   urllib.parseRb   t   urllibR    t   urllib.requestR
   R7   RS   t   IS_PYPYt   version_infot
   IS_PYTHON3t	   xml.etreeR   t   elementtreet   hasattrR   t
   ET_VERSIONR   t   CET_VERSIONR   RI   t   DocFileSuitet   DocTestParsert   NORMALIZE_WHITESPACEt   ELLIPSISRn   t   local_doctestR!   t	   NameErrort   localsR"   t   pytestt   objectR$   t   markR;   t   ioR<   t   builtinsR=   RP   R@   RB   RC   RE   RK   t   compilet   subRG   RH   RO   t   __builtin__t   MRQ   RR   RZ   Rl   R[   Rp   Ru   R†   Rˆ   R‹   RŒ   RF   R’   R“   R–   Rš   (    (    (    s>   lib/python2.7/site-packages/et_xmlfile/tests/common_imports.pyt   <module>   sÆ   				
	
&				