o
    tPfG                     @   s  d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dl
mZ d dlmZ zd dlmZ W n eyK   dZY nw d dlmZ d dlmZ dd	 Zd
d Zdd ZG dd deZG dd deejZG dd deZG dd deeZe	eeddG dd deeZ G dd dee	jZ!G dd deejZ"dd Z#e#  e	$edu d G d!d" d"e"Z%e&d#kre'  dS dS )$    )print_function)absolute_importN)
fileobjectOpenDescriptorGreenOpenDescriptor)sysinfoc                 C   s(   |D ]}|  | |   q|   d S N)writeflushclose)fobjline	character r   ^/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__fileobject.pyWriter   s   

r   c                 C   s&   zt |  W d S  ty   Y d S w r
   )osr   OSError)fdr   r   r   close_fd_quietly"   s
   r   c                    s   t   fdd}|S )Nc                    s   | j s| d  |  d S )NzDoesn't work with regular files)WORKS_WITH_REGULAR_FILESskipTestselffuncr   r   f)   s   
z*skipUnlessWorksWithRegularFiles.<locals>.f)	functoolswraps)r   r   r   r   r   skipUnlessWorksWithRegularFiles(   s   r!   c                   @   s   e Zd Zdd Zdd ZdS )CleanupMixinc                 C   s0   t |\}}| tj| | t| ||fS r
   )tempfilemkstemp
addCleanupr   remover   )r   suffixfilenopathr   r   r   _mkstemp2   s   zCleanupMixin._mkstempc                 C   s,   t  \}}| t| | t| ||fS r
   )r   piper%   r   )r   rwr   r   r   _pipe8   s   zCleanupMixin._pipeN)__name__
__module____qualname__r*   r.   r   r   r   r   r"   1   s    r"   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	e
dd Z	d(ddZe
dd Ze
dd Ze
dd Ze
dd Ze
dd Ze
dd Ze
dd  Zd!d" Ze
ejd#d$ Ze
d%d& Zd'S ))TestFileObjectBlockTc                 C      t jS r
   )r   FileObjectBlockr   r   r   r   _getTargetClassE      z#TestFileObjectBlock._getTargetClassc                 O      |   |i |S r
   r5   r   argskwargsr   r   r   _makeOneH      zTestFileObjectBlock._makeOnec                 K   s&   |   \}}| j||ffi | d S r
   )r.   _do_test_del)r   r;   r,   r-   r   r   r   	_test_delK   s   zTestFileObjectBlock._test_delc           	      K   sB  |\}}| j |dfi |}|d z|  W n ty4   tdt|tjd dd l}|	  Y nw dd l
}|  |dt ~t  W d    n1 sSw   Y  |ddr{| ttf t| W d    n1 suw   Y  nt| |  |d	}| | d W d    d S 1 sw   Y  d S )
Nwb   xzFailed flushing fileobject)filer   ignorer   Trb)r<   r   r   IOErrorprintreprsysstderr	traceback	print_excwarningscatch_warningssimplefilterResourceWarninggccollectgetassertRaisesr   r   r   assertEqualread)	r   r+   r;   r,   r-   srJ   rL   r   r   r   r   r>   O   s2   



"z TestFileObjectBlock._do_test_delc                 C   s   |    d S r
   r?   r   r   r   r   test_dell   s   zTestFileObjectBlock.test_delc                 C      | j dd d S )NTr   rW   r   r   r   r   test_del_closep   s   z"TestFileObjectBlock.test_del_closec                 C   s   |  d\}}d}t|d t|| t| t|d}|d |d}W d    n1 s4w   Y  t|d)}| j|ddd}| |	  |d | 
d|  |d}W d    n1 sjw   Y  | 
|| | 
|| d S )	Nz".gevent.test__fileobject.test_seeks   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   BBBBBBBBBBBBBBBrD      i   FrZ   )r*   r   r   r   openseekrU   r<   
assertTrueseekablerT   tell)r   r(   r)   rV   r   native_dataf_rawfileobj_datar   r   r   	test_seekt   s$   


zTestFileObjectBlock.test_seekrU   c              	   K   s,  |  d| \}}t|| t| tj||fi |}t|| }	W d    n1 s/w   Y  |rW| j||fi |}t|| }
W d    n1 sQw   Y  n7tj}|||fi |#}| |}t|| }
W d    n1 szw   Y  W d    n1 sw   Y  | |	|
 |
S )Nz.gevent_test_)	r*   r   r   r   ior]   getattrr<   rT   )r   	byte_data	open_modemeth	open_pathopen_kwargsr(   r)   r   rb   gevent_dataopenerrawr   r   r   __check_native_matches   s(   
z*TestFileObjectBlock.__check_native_matchesc                 C   s   |  dd}| |t d S )Ns   abcdefgr,   *_TestFileObjectBlock__check_native_matchesassertIsInstancestrr   rm   r   r   r   test_str_default_to_native   s   z.TestFileObjectBlock.test_str_default_to_nativec                 C   s(   | j dddddd}| |t d S )Nu   ☃zutf-8zr+   )	bufferingencoding)rr   encoders   rt   ru   r   r   r   test_text_encoding   s   z&TestFileObjectBlock.test_text_encodingc                 C   s   d S r
   r   r   r   r   r   test_does_not_leak_on_exception   s   z3TestFileObjectBlock.test_does_not_leak_on_exceptionc                 C   sH   t jdkr
| d | jdddd}| |d t | t|d d S )	N      U file mode was removed in 3.11   line1
line2
line3lastline

rbU	readlinesrj   r      )rH   version_infor   rr   rs   bytesrT   lenru   r   r   r    test_rbU_produces_bytes_readline   s   

z4TestFileObjectBlock.test_rbU_produces_bytes_readlinec                 C   s8   t jdkr
| d | jdddd}| |d t d S )Nr}   r   r   rUr   r   r   )rH   r   r   rr   rs   rt   ru   r   r   r   test_rU_produces_native   s   

z+TestFileObjectBlock.test_rU_produces_nativec                 C   s    | j dddd}| |t d S )N   line1
r,   readliner   rq   ru   r   r   r   test_r_readline_produces_native   s   z3TestFileObjectBlock.test_r_readline_produces_nativec                 C   s"   | j ddddd}| |t d S )Nr   r,   r   F)rj   rk   rq   ru   r   r   r   *test_r_readline_on_fobject_produces_native   s   z>TestFileObjectBlock.test_r_readline_on_fobject_produces_nativec                 C   s6   t  \}}| |}| |d}|  |  d S )Nr-   )r   r+   r<   r   )r   r,   r-   xyr   r   r   test_close_pipe   s
   
z#TestFileObjectBlock.test_close_pipec                    s   d\  }t }tjrdn }|j  |j| G  fdddt}| d}	t
 t|d W d    n1 sLw   Y  |  	t
 t|d W d    n1 sjw   Y  |  z|  W n	 ty   Y nw |j  |j| fdd}| t}|| W d    n1 sw   Y  t}|| W d    d S 1 sw   Y  d S )	Nz#.gevent_test_named_path_after_closez<fdopen>c                       s<   e Zd Z fddZdd  Z Z Z ZZdd  Z	Z
dS )z;TestFileObjectBlock.test_name_after_close.<locals>.Namelessc                    s    S r
   r   r   r(   r   r   r(        zBTestFileObjectBlock.test_name_after_close.<locals>.Nameless.filenoc                 S      dS )NFr   r   r   r   r   <lambda>	      zDTestFileObjectBlock.test_name_after_close.<locals>.Nameless.<lambda>c                 S   r   )NTr   r   r   r   r   r   
  r   N)r/   r0   r1   r(   r   r   isattyclosedwritabler`   readabler   r   r   r   Nameless  s    r   rD   namec                    s2    | }|j  |  |j  d S r
   )r<   rT   r   r   )argr   )r)   r   r   r   check  s   
z8TestFileObjectBlock.test_name_after_close.<locals>.check)r*   r<   r   fdopen	greentestPY2rT   r   objectrS   AttributeErrorrg   r   r   r]   rf   )r   r   nfnf_namer   namelessr   r   )r(   r)   r   r   test_name_after_close   s>   




"z)TestFileObjectBlock.test_name_after_closec                    s    d\}}t|d t| td t  fdd}|d|dd |d	d
 |dd |dd W d    d S 1 sIw   Y  d S )Nz.gevent_test_readintos   hello world    c                    s:    d |  }|t|  d | | d S r
   )readintorT   r   )
byte_countexpected_data
bytes_readbufr   mbufr   r   r   assertReadInto7  s   z@TestFileObjectBlock.test_readinto_serial.<locals>.assertReadIntorD      s   he      ls   lo world    )r*   r   r   r   	bytearray
memoryviewr<   )r   r(   r)   r   r   r   r   test_readinto_serial.  s   



"z(TestFileObjectBlock.test_readinto_serialN)rU   T)r/   r0   r1   r   r5   r<   r?   r>   rX   r[   r!   re   rr   rv   r{   r|   r   r   r   r   r   r   ignores_leakcheckr   r   r   r   r   r   r2   ?   s@    









	8r2   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )ConcurrentFileObjectMixinc                 C   sR   |   \}}| |d}| | | |d}| | | t|dt| d S )NrD   r-   read1)r.   r<   _close_on_teardownr_   hasattrdir)r   r,   r-   readerwriterr   r   r   test_read1_binary_presentG  s   

z3ConcurrentFileObjectMixin.test_read1_binary_presentc                 C   sJ   |   \}}| |d}| | | tj| | t|dt| d S )Nrtr   )	r.   r<   r   r%   r   r   assertFalser   r   r   r,   r-   r   r   r   r   test_read1_text_not_presentP  s
   
z5ConcurrentFileObjectMixin.test_read1_text_not_presentc                 C   sB   |   \}}| tj| | |}| | | t|d d S )Nr   )r.   r%   r   r   r<   r   r   r   r   r   r   r   test_read1_defaultX  s
   

z,ConcurrentFileObjectMixin.test_read1_defaultc                 C   s   |   \}}| j|ddd}| j|ddd}| | | | |d |d}| |d |dg |d}| |d d S )NrD   r   )bufsizer@      ar      2)r.   r<   r   r   rU   rT   
writelines)r   r,   r-   r   r   br   r   r   test_bufsize_0a  s   




z(ConcurrentFileObjectMixin.test_bufsize_0c           	      C   s   dd l }|  \}}g d}tt| |d|}zD| # tjdkr,d}| 	d n|
dt d}| ||}W d    n1 sDw   Y  | }|  | d	| W |  d S |  w )
Nr   )r   s   line2s   line3
s   line4
line5s   
line6r@   r}   r,   r   rC   r   z#line1
line2
line3
line4
line5
line6)rL   r.   geventspawnr   r<   rM   rH   r   r   rN   DeprecationWarningrU   r   rT   kill)	r   rL   r,   r-   linesgmoder   resultr   r   r   test_newlinesp  s"   


z'ConcurrentFileObjectMixin.test_newlinesc           
      C   s   |   \}}| | |d}| | |d}tt|dg}z/td}td}||}||}	| |d | |d | d | |	d W |	  d S |	  w )NrD   r@   s   hellor   rw   r   )
r.   r   r<   r   r   r   r   r   rT   r   )
r   r,   r-   rfwfr   buf1buf2n1n2r   r   r   test_readinto  s   

z'ConcurrentFileObjectMixin.test_readintoN)	r/   r0   r1   r   r   r   r   r   r   r   r   r   r   r   C  s    		r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestFileObjectThreadc                 C   r3   r
   )r   FileObjectThreadr   r   r   r   r5     r6   z$TestFileObjectThread._getTargetClassc                 C   rY   )NFrZ   rW   r   r   r   r   test_del_noclose  s   z%TestFileObjectThread.test_del_noclosec                 C   
   t dNzRace conditionsunittestSkipTestr   r   r   r   rX        
zTestFileObjectThread.test_delc                 C   r   r   r   r   r   r   r   r[     r   z#TestFileObjectThread.test_del_closeN)r/   r0   r1   r5   r   rX   r[   r   r   r   r   r     s
    r   FileObjectPosixzNeeds FileObjectPosixc                   @   s,   e Zd ZejrejrdZdd Zdd ZdS )TestFileObjectPosixFc                 C   r3   r
   )r   r   r   r   r   r   r5     r6   z#TestFileObjectPosix._getTargetClassc                 C   s   |   \}}| t}t|dtj W d    n1 sw   Y  |j}| t}| j|ddd}|j	
d W d    n1 sDw   Y  |j}| |j|j | |j|j | |j|j | t|t| d S )Nr   r,   FrZ   )r.   rS   r   r   lseekSEEK_SET	exceptionrE   r<   fileior^   rT   errnostrerrorr:   rt   )r   r,   _wctxos_exr   io_exr   r   r   test_seek_raises_ioerror  s   z,TestFileObjectPosix.test_seek_raises_ioerrorN)	r/   r0   r1   r	   LIBUVLINUXr   r5   r   r   r   r   r   r     s
    r   c                   @      e Zd Zdd ZdS )TestTextModec                 C   s   t   | d\}}t| t|d}|d W d    n1 s%w   Y  t|d}| }W d    n1 s>w   Y  | |tj	
d d S )Nz%.gevent.test__fileobject.test_defaultr-   
rD   ascii)r   get_hubr*   r   r   r]   r   rU   rT   lineseprz   )r   r(   r)   r   datar   r   r    test_default_mode_writes_linesep  s   

z-TestTextMode.test_default_mode_writes_linesepN)r/   r0   r1   r   r   r   r   r   r         r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d Zed
ddedddedddeddded
ddedddedddedddedddedddd ed!dd"d#ed$dd%d&fZd'd( Z	d)S )*TestOpenDescriptorc                 C      t S r
   r   r   r   r   r   r5     r   z"TestOpenDescriptor._getTargetClassc                 O   r7   r
   r8   r9   r   r   r   r<     r=   zTestOpenDescriptor._makeOnec                 O   sB   |  || | j|i | W d    d S 1 sw   Y  d S r
   )assertRaisesRegexr<   )r   regexkindr:   r;   r   r   r   _check  s   "zTestOpenDescriptor._checkc                 K   
   | t |fS r
   )	TypeErrorrer;   r   r   r   r        
 zTestOpenDescriptor.<lambda>c                 K   r  r
   )
ValueErrorr  r   r   r   r     r  r   *   )r   rx   nope)rx   ry   )ry   errors)r  aoeugzmode U cannot be combinedwUztext and binaryrtbzappend mode at oncerwzexactly one+ztake an encodingrD   r   )r   ry   ztake an errorsstrict)r   r  ztake a newliner   )r   newlinec                 C   sZ   ddl m} |  \}}| j|ddddd}| |j | }| || t	| d S )Nr   )WriteallMixinr@   FT)rx   closefdatomic_write)
gevent._fileobjectcommonr  r.   r<   r_   r  openedrs   r   r   )r   r  r(   r   descr   r   r   r   test_atomicwrite_fd  s   z&TestOpenDescriptor.test_atomicwrite_fdN)
r/   r0   r1   r5   r<   r  casevaseCASESr  r   r   r   r   r     s(    








r   c                  C   s:   t jD ]\} }}tt d| dd | ||fdd qd S )Ntest_ _c                 S   s   | j ||dfi |S )Nr   )r  )r   _re_kind_kwr   r   r   r   %  s    zpop.<locals>.<lambda>)r   r  setattrreplace)r  r  r;   r   r   r   pop!  s   r&  zNo support for non-blocking IOc                   @   r   )TestGreenOpenDescriptonc                 C   r   r
   r   r   r   r   r   r5   +  r   z'TestGreenOpenDescripton._getTargetClassN)r/   r0   r1   r5   r   r   r   r   r'  )  r   r'  __main__)(
__future__r   r   r   rP   rf   r   rH   r#   r   r   r   r  r   gevent._fileobjectposixr   ImportErrorgevent.testingtestingr   r	   r   r   r!   r   r"   TestCaser2   r   r   
skipUnlessr   r   r   r   r&  skipIfr'  r/   mainr   r   r   r   <module>   s`    	  [#+