o
    Y7U"  ã                   @   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
ƒr�e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
ƒr¾e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   úQ/var/www/html/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)Ú
test_classÚversion_dictÚcurrent_versionÚfind_required_versionr   ÚnameÚ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   r1   zskipif.__call__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r3   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 )Nr4   Ú__file__Ú )
ÚsysÚmodulesÚ	_getframeÚ	f_globalsÚosÚpathÚnormpathÚjoinÚdirnameÚgetattr)ÚfilenameÚframe_depthÚmoduler   r   r   Ú_get_caller_relative_patho   s   ÿrH   )ÚStringIO)ÚstrúUTF-8c                 C   ó   | S r   r   ©ÚsÚencodingr   r   r   Ú_stry   r   rP   c                 C   s
   |   |¡S r   )ÚencoderM   r   r   r   Ú_bytes{   ó   
rR   )ÚBytesIOc                  G   s*   | rt | d tƒr| d  d¡f} t| Ž S )Nr   rK   )Ú
isinstancerJ   rQ   Ú_BytesIO)r/   r   r   r   rT   ~   s   rT   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   )rH   Ú	read_fileÚ_fix_unicodeÚ_fix_exceptionsÚdoctestÚDocTestCaseÚdoctest_parserÚget_doctestr?   r@   Úbasename©rE   Údoctestsr   r   r   Úmake_doctest†   s   

ÿÿrb   ©Úunicodec                 C   s   t | |d�S )N)rO   rc   rM   r   r   r   rP   ‘   ó   c                 C   rL   r   r   rM   r   r   r   rR   “   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 )NrW   z\1, \2r   )rH   rX   Ú_fix_tracebackrZ   Ú
_fix_bytesr[   r\   r]   r^   r?   r@   r_   r`   r   r   r   rb   ›   s   


ÿÿc                 C   r   r   r   ©Útest_methodr   r   r   Ú<lambda>©   r1   rj   c                 C   rL   r   r   rh   r   r   r   rj   ª   r1   c                 C   s   | r|S |S r   r   )Ú	conditionÚwhyÚ_skipÚ_keepr   r   r   ÚskipIf¨   s   ro   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   )ÚgcÚcollectr   r   r   r   ÚtearDown±   re   zHelperTestCase.tearDownNc                 C   s(   t |tƒr	t|ƒnt|ƒ}tj||d�S )N)Úparser)rU   ÚbytesrT   rI   ÚetreeÚparse)r   Útextrt   Úfr   r   r   rw   ´   s   zHelperTestCase.parsec                 C   s.   t  | ¡ ¡ tdƒtdƒ¡ tdƒtdƒ¡S )Nú r:   Ú
)rv   ÚtostringÚgetrootÚreplacerR   )r   Útreer   r   r   Ú_rootstring¸   s
   ÿÿzHelperTestCase._rootstringr   )r4   r5   r6   rs   rw   r€   ÚunittestÚTestCaseÚassertFalseÚAttributeErrorÚfailIfr   r   r   r   rp   °   s    
ÿrp   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   r0   Ä   rS   zSillyFileLike.__init__Nc                 C   sH   | j r |r| j d |… }| j |d … | _ |S | j }tdƒ| _ |S tdƒS )Nr:   )r‡   rR   )r   ÚamountÚdatar   r   r   ÚreadÇ   s   þ
zSillyFileLike.readr   )r4   r5   r6   rR   r0   rŠ   r   r   r   r   r†   Ã   s    r†   c                   @   s(   e Zd Zddd„Zdd„ Zdd	d
„ZdS )ÚLargeFileLikeéd   é   é   c                 C   s0   t ƒ | _tdƒ| | _t|ƒ| _|  |¡| _d S ©NÚa)rT   r‰   rR   ÚcharsÚrangeÚchildrenÚiterelementsÚmore©r   ÚcharlenÚdepthr“   r   r   r   r0   Ó   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>)rR   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   )r4   r5   r6   r0   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‹   r0   rI   r‰   rP   r‘   r”   r•   r–   r   r   r   r0   ù   s   zLargeFileLikeUnicode.__init__c                 c   r™   rš   )rP   r“   r”   r‘   rœ   r   r   r   r”   ÿ   rŸ   z!LargeFileLikeUnicode.iterelementsNr¦   )r4   r5   r6   r0   r”   r   r   r   r   r§   ø   s    
r§   c                 C   s   t j t¡}t j || ¡S r   )r?   r@   rC   r9   rB   )r$   Ú_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  re   r­   Úrc                 C   s,   t | |ƒ}z| ¡ }W | ¡  |S | ¡  w r   )ÚopenrŠ   Úclose)r$   Úmodery   r‰   r   r   r   rX     s   


ÿrX   Úwc                 C   s.   t | |ƒ}z| |¡}W | ¡  d S | ¡  w r   )r¯   r    r°   )r$   r‰   r±   ry   r   r   r   Úwrite_to_file  s   
r³   c                 C   s   t t| ƒ|ƒS r   )rX   r©   )r$   r±   r   r   r   ÚreadFileInTestDir%  s   r´   c                 C   s8   t  t| tƒrt| ƒnt| ƒ¡}tƒ }| |¡ | ¡ S r   )rv   rw   rU   ru   rT   rI   Ú
write_c14nr¢   )Úxmlr   ry   r   r   r   Úcanonicalize(  s    
r·   c                 C   s.   t  d| ¡D ]\}}|  |tt|ƒƒ¡} q| S )Nz(&#([0-9]+);))r   r   r~   Úunichrr   )r¶   Úentity_nameÚvaluer   r   r   Ú
unentitify.  s   r»   )r8   )rK   )r®   )r²   )Lr?   Úos.pathr   rq   r;   r�   rª   ÚImportErrorÚurllib.parserw   Úurllibr   Úurllib.requestr   rD   ÚIS_PYPYÚversion_infoÚ
IS_PYTHON3Ú	xml.etreer   ÚelementtreeÚhasattrr   Ú
ET_VERSIONr   ÚCET_VERSIONr&   r[   ÚDocFileSuiteÚDocTestParserÚNORMALIZE_WHITESPACEÚELLIPSISr„   Úlocal_doctestr+   Ú	NameErrorÚlocalsr,   ÚpytestÚobjectr.   ÚmarkrH   ÚiorI   ÚbuiltinsrJ   rd   rP   rR   rT   rV   r]   ÚcompileÚsubrY   rZ   rb   Ú__builtin__ÚMrf   rg   ro   r‚   rp   r†   r‹   r§   r©   r¬   r­   rX   r³   r´   r·   r»   r   r   r   r   Ú<module>   sä    ÿ	ÿÿ€ý
ÿ€ý

þÿ
ÿ
ÿ





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

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