o
    b"                     @   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zd dlZW n ey-   d dlm	Z Y nw zd dl
mZ W n
   d dlmZ Y dd ZeedddkpTeeddduZejd  dkZzd d	lmZ W n ey   zd d	lmZ W n ey~   dZY nw Y nw eed
reejZndZzd dlmZ W n ey   zd dlZW n ey   dZY nw Y nw eed
reejZndZdd Zzd dlZej ej ej ej W n ee fy   d dl!ZY nw ze" W n e#y   dd Z"Y nw e"e$ d< ze% W n e#y   dd Z%Y nw e%e$ d< zd dl&Z&W n ey-   G dd de'Z(Y nw e&j)j(Z(dLddZ*d dl+m,Z, ejd  dkrtd dl-m.Z/ dMddZ0dMddZ1d dl+m2Z3 d d! Z2e Z4e5d"j6Z7e5d#j6Z8d$d% Z9n2d d&l:m/Z/ dMd'dZ0dMd(dZ1d dl+m2Z2 e Z4e5d)ej;j6Z<e5d*j6Z8e5d+j6Z=d,d% Z9zej>Z>W n e y   d-d. d/d. fd0d1Z>Y nw G d2d3 d3ej?Z@G d4d5 d5ZAG d6d7 d7ZBG d8d9 d9eBZCd:d; ZDd<d= ZEd>d? ZFdNdAdBZGdOdDdEZHdNdFdGZIdHdI ZJdJdK ZKdS )P    N)pathname2urlc              	   C   sL   g }t d| D ]}z	|t| W q ty!   || Y qw t|S )Nz([0-9]+|[^0-9.]+))refindallappendint
ValueErrortuple)version_stringlpart r   ^/var/www/secure340b-portal/env/lib/python3.10/site-packages/et_xmlfile/tests/common_imports.pymake_version_tuple   s   r   implementationpypypypy_version_info   )ElementTreeVERSIONr   r   r   )cElementTreec                 C   s>   |j }dd }t| D ]}||d}||krt| || qdS )zGRemove test methods that do not work with the current lib version.
    c                 S      d S Nr   selfr   r   r   dummy_test_method?      z,filter_by_version.<locals>.dummy_test_methodr   N)getdirsetattr)Z
test_classZversion_dictcurrent_versionZfind_required_versionr   nameZexpected_versionr   r   r   filter_by_version;   s   
r"   c                 K   s   t | } | jdi | | S )Nr   )listsort)seqkwargsr   r   r   sortedT   s   r'   c                 C   s   |   S r   )next)itr   r   r   r(   _   s   r(   c                   @   s    e Zd ZdZdd Zdd ZdS )skipifzNUsing a class because a function would bind into a method when used in classesc                 G   r   r   r   )r   argsr   r   r   __init__j       zskipif.__init__c                 G   s   |S r   r   )r   funcr+   r   r   r   __call__k   r-   zskipif.__call__N)__name__
__module____qualname____doc__r,   r/   r   r   r   r   r*   h   s    r*      c              
   C   s<   t jt |jd  }tjtjtjt	|dd| S )Nr0   __file__ )
sysmodules	_getframe	f_globalsospathnormpathjoindirnamegetattr)filenameZframe_depthmoduler   r   r   _get_caller_relative_patho   s   rC   )StringIO)strUTF-8c                 C      | S r   r   sencodingr   r   r   _stry   r   rK   c                 C   s
   |  |S r   )encoderH   r   r   r   _bytes{      
rM   )BytesIOc                  G   s*   | rt | d tr| d df} t|  S )Nr   rF   )
isinstancerE   rL   _BytesIO)r+   r   r   r   rO   ~   s   rO   z(\s+)u(["\'])z(.*except [^(]*),\s*(.*:)c              	   C   sD   t | } t| }td|}td|}tt|i tj	
| | dS )N\1\2z\1 as \2r   )rC   	read_file_fix_unicode_fix_exceptionsdoctestDocTestCasedoctest_parserget_doctestr;   r<   basenamerA   Zdoctestsr   r   r   make_doctest   s   

r\   unicodec                 C   s   t | |dS )N)rJ   r]   rH   r   r   r   rK         c                 C   rG   r   r   rH   r   r   r   rM      r   z1^(\s*)(?:\w+\.)+(\w*(?:Error|Exception|Invalid):)z(.*except [^(]*)\s+as\s+(.*:)z(\s+)b(["\'])c              	   C   sN   t | } t| }td|}td|}td|}tt|i t	j
| | dS )NrR   z\1, \2r   )rC   rS   _fix_tracebackrU   
_fix_bytesrV   rW   rX   rY   r;   r<   rZ   r[   r   r   r   r\      s   


c                 C   r   r   r   Ztest_methodr   r   r   <lambda>   r-   rc   c                 C   rG   r   r   rb   r   r   r   rc      r-   c                 C   s   | r|S |S r   r   )	conditionwhyZ_skipZ_keepr   r   r   skipIf   s   rf   c                   @   sN   e Zd Zdd ZdddZdd Zzejj W dS  e	y&   ejj
ZY dS w )	HelperTestCasec                 C   s   t   d S r   )gcZcollectr   r   r   r   tearDown   r_   zHelperTestCase.tearDownNc                 C   s(   t |tr	t|nt|}tj||dS )N)parser)rP   bytesrO   rD   etreeparse)r   textrj   fr   r   r   rm      s   zHelperTestCase.parsec                 C   s.   t | tdtdtdtdS )N r6   
)rl   tostringgetrootreplacerM   )r   treer   r   r   _rootstring   s
   zHelperTestCase._rootstringr   )r0   r1   r2   ri   rm   rv   unittestTestCaseZassertFalseAttributeErrorZfailIfr   r   r   r   rg      s    
rg   c                   @   s&   e Zd ZedfddZdddZdS )SillyFileLikez<foo><bar/></foo>c                 C   s
   || _ d S r   )xml_data)r   r{   r   r   r   r,      rN   zSillyFileLike.__init__Nc                 C   sH   | j r |r| j d | }| j |d  | _ |S | j }td| _ |S tdS )Nr6   )r{   rM   )r   amountdatar   r   r   read   s   
zSillyFileLike.readr   )r0   r1   r2   rM   r,   r~   r   r   r   r   rz      s    rz   c                   @   s(   e Zd ZdddZdd Zdd	d
ZdS )LargeFileLiked         c                 C   s0   t  | _td| | _t|| _| || _d S Na)rO   r}   rM   charsrangechildreniterelementsmorer   Zcharlendepthr   r   r   r   r,      s   
zLargeFileLike.__init__c                 c   ^    t dV  |d8 }|dkr$| jD ]}| |D ]}|V  q| jV  qn| jV  t dV  d S Nz<root>   r   z</root>)rM   r   r   r   r   r   childelementr   r   r   r         


zLargeFileLike.iterelementsNc                 C   s   | j }|j}|r| jD ]}|| | |kr nqn
| jD ]}|| q| }|d |  |rB|||d   |d | }|S )Nr   )r}   writer   tellgetvalueseektruncate)r   r|   r}   r   r   resultr   r   r   r~      s$   



zLargeFileLike.readr   r   r   r   )r0   r1   r2   r,   r   r~   r   r   r   r   r      s    
r   c                   @   s   e Zd Zd	ddZdd ZdS )
LargeFileLikeUnicoder   r   r   c                 C   s6   t | ||| t | _td| | _| || _d S r   )r   r,   rD   r}   rK   r   r   r   r   r   r   r   r,      s   zLargeFileLikeUnicode.__init__c                 c   r   r   )rK   r   r   r   r   r   r   r   r      r   z!LargeFileLikeUnicode.iterelementsNr   )r0   r1   r2   r,   r   r   r   r   r   r      s    
r   c                 C   s   t jt}t j|| S r   )r;   r<   r?   r5   r>   )r!   Z_testdirr   r   r   fileInTestDir  s   r   c                 C   s   t dt| S )Nzfile:)urlparseurljoinr   )r<   r   r   r   path2url  s   r   c                 C   s   t t| S r   )r   r   )r!   r   r   r   fileUrlInTestDir  r_   r   rc                 C   s,   t | |}z| }W |  |S |  w r   )openr~   close)r!   modero   r}   r   r   r   rS     s   


rS   wc                 C   s.   t | |}z||}W |  d S |  w r   )r   r   r   )r!   r}   r   ro   r   r   r   write_to_file  s   
r   c                 C   s   t t| |S r   )rS   r   )r!   r   r   r   r   readFileInTestDir%  s   r   c                 C   s8   t t| trt| nt| }t }|| | S r   )rl   rm   rP   rk   rO   rD   
write_c14nr   )xmlru   ro   r   r   r   canonicalize(  s    
r   c                 C   s.   t d| D ]\}}| |tt|} q| S )Nz(&#([0-9]+);))r   r   rt   unichrr   )r   entity_namevaluer   r   r   
unentitify.  s   r   )r4   )rF   )r   )r   )Lr;   os.pathr   rh   r7   rw   r   ImportErrorurllib.parserm   urllibr   urllib.requestr   r@   ZIS_PYPYversion_infoZ
IS_PYTHON3Z	xml.etreer   Zelementtreehasattrr   Z
ET_VERSIONr   ZCET_VERSIONr"   rV   ZDocFileSuiteZDocTestParserZNORMALIZE_WHITESPACEELLIPSISry   Zlocal_doctestr'   	NameErrorlocalsr(   Zpytestobjectr*   markrC   iorD   builtinsrE   r^   rK   rM   rO   rQ   rX   compilesubrT   rU   r\   __builtin__Mr`   ra   rf   rx   rg   rz   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   <module>   s    	













	&


