
    iJJ                        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 	 d dlmZ n# e$ r dZY nw xY wd dlmZ d dlmZ d Zd	 Zd
 Z G d de          Z G d deej                  Z G d de          Z G d dee          Z e	j         eed          d           G d dee                      Z  G d dee	j                  Z! G d deej                  Z"d Z# e#              e	j$        edu d           G d de"                      Z%e&dk    r ej'                     dS dS )     )print_function)absolute_importN)
fileobjectOpenDescriptorGreenOpenDescriptor)sysinfoc                     |D ]+}|                      |           |                                  ,|                                  d S N)writeflushclose)fobjline	characters      H/usr/local/lib/python3.11/dist-packages/gevent/tests/test__fileobject.pyWriterr      sC      	

9

JJLLLLL    c                 R    	 t          j        |            d S # t          $ r Y d S w xY wr   )osr   OSError)fds    r   close_fd_quietlyr   "   s:    
   s    
&&c                 F     t          j                    fd            }|S )Nc                 V    | j         s|                     d            |            d S )NzDoesn't work with regular files)WORKS_WITH_REGULAR_FILESskipTest)selffuncs    r   fz*skipUnlessWorksWithRegularFiles.<locals>.f)   s2    , 	=MM;<<<T




r   )	functoolswraps)r    r!   s   ` r   skipUnlessWorksWithRegularFilesr$   (   s8    _T     Hr   c                       e Zd Zd Zd ZdS )CleanupMixinc                     t          j        |          \  }}|                     t          j        |           |                     t
          |           ||fS r   )tempfilemkstemp
addCleanupr   remover   )r   suffixfilenopaths       r   _mkstempzCleanupMixin._mkstemp2   sK    '//	4((((&111t|r   c                     t          j                    \  }}|                     t          |           |                     t          |           ||fS r   )r   piper*   r   )r   rws      r   _pipezCleanupMixin._pipe8   sD    wyy1(!,,,(!,,,!tr   N)__name__
__module____qualname__r/   r4    r   r   r&   r&   1   s2              r   r&   c                   L    e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
ed	             Z	 ddZed             Zed             Zed             Zed             Zed             Zed             Zed             Zd Zeej        d                         Zed             Z xZS )TestFileObjectBlockTc                 n    t                                                       t          j                     d S r   )supersetUpgccollect)r   	__class__s    r   r=   zTestFileObjectBlock.setUpE   s%     	
r   c                     t           j        S r   )r   FileObjectBlockr   s    r   _getTargetClassz#TestFileObjectBlock._getTargetClassQ       ))r   c                 6     |                                  |i |S r   rD   r   argskwargss      r   _makeOnezTestFileObjectBlock._makeOneT   #    %t##%%t6v666r   c                 T    |                                  \  }} | j        ||ffi | d S r   )r4   _do_test_del)r   rJ   r2   r3   s       r   	_test_delzTestFileObjectBlock._test_delW   s8    zz||11a&++F+++++r   c                    |\  }} | j         |dfi |}|                    d           	 |                                 nQ# t          $ rD t	          dt          |          t          j                   dd l}|	                                 Y nw xY wdd l
}|                                5  |                    dt                     ~t          j                     d d d            n# 1 swxY w Y   |                    dd          rN|                     t$          t          f          5  t'          j        |           d d d            n# 1 swxY w Y   nt'          j        |           |                      |d	          5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )
Nwb   xzFailed flushing fileobject)filer   ignorer   Trb)rK   r   r   IOErrorprintreprsysstderr	traceback	print_excwarningscatch_warningssimplefilterResourceWarningr>   r?   getassertRaisesr   r   r   assertEqualread)	r   r1   rJ   read_fdwrite_fdwriterr[   r]   r   s	            r   rN   z TestFileObjectBlock._do_test_del[   s|    x8888T	"LLNNNN 	" 	" 	".V3:NNNN!!!!!		" 	$$&& 	 	!!(O<<<JLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ::gt$$ 	""GW#566 # #"""# # # # # # # # # # # # # # # HX]]7D)) 	0TTYY[[$///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sH   A   ABB)0C%%C),C)'EEE>)F44F8;F8c                 .    |                                   d S r   rO   rC   s    r   test_delzTestFileObjectBlock.test_dely   s    r   c                 2    |                      d           d S )NTr   ri   rC   s    r   test_del_closez"TestFileObjectBlock.test_del_close}   s    T"""""r   c                 $   |                      d          \  }}d}t          j        |d           t          j        ||           t          j        |           t	          |d          5 }|                    d           |                    d          }d d d            n# 1 swxY w Y   t	          |d          5 }|                     |dd          }|                     |	                                           |                    d           | 
                    d|                                           |                    d          }d d d            n# 1 swxY w Y   | 
                    ||           | 
                    ||           d S )	Nz".gevent.test__fileobject.test_seeks   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   BBBBBBBBBBBBBBBrU      i   Frl   )r/   r   r   r   openseekrd   rK   
assertTrueseekablerc   tell)r   r-   r.   sr!   native_dataf_rawfileobj_datas           r   	test_seekzTestFileObjectBlock.test_seek   s   }}%IJJ
###

$ 	'FF2JJJ&&,,K	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' $ 	(eT77A OOAJJLL)))FF2JJJR***
 66$<<L	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	a(((l33333s%   )+B  B$'B$;BEE Erd   c                    |                      d|z             \  }}t          j        ||           t          j        |           t	          j        ||fi |5 } t          ||                      }	d d d            n# 1 swxY w Y   |r@ | j        ||fi |5 } t          ||                      }
d d d            n# 1 swxY w Y   nst          j        } |||fi |5 }|                     |          5 } t          ||                      }
d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |	|
           |
S )Nz.gevent_test_)	r/   r   r   r   iorp   getattrrK   rc   )r   	byte_data	open_modemeth	open_pathopen_kwargsr-   r.   r!   rv   gevent_dataopenerraws                r   __check_native_matchesz*TestFileObjectBlock.__check_native_matches   sa    }}_y%@AA
###
WT94444 	-*'!T**,,K	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-  		5tY>>+>> 1!.ga..001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 WFi77;77 53]]3'' 51"2'!T"2"2"4"4K5 5 5 5 5 5 5 5 5 5 5 5 5 5 55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 	k222sZ   A==BBB>>CC D26DD2D	D2"D	#D22D69D6c                 h    |                      dd          }|                     |t                     d S )Ns   abcdefgr2   *_TestFileObjectBlock__check_native_matchesassertIsInstancestrr   r   s     r   test_str_default_to_nativez.TestFileObjectBlock.test_str_default_to_native   s5     11*cBBk3/////r   c                     |                      d                    d          ddd          }|                     |t                     d S )Nu   ☃zutf-8zr+   )	bufferingencoding)r   encoder   r   r   s     r   test_text_encodingz&TestFileObjectBlock.test_text_encoding   sS    11!!'**' 2 
 

 	k3/////r   c                     d S r   r8   rC   s    r   test_does_not_leak_on_exceptionz3TestFileObjectBlock.test_does_not_leak_on_exception   s	     	r   c                    t           j        dk    r|                     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r   r      )rY   version_infor   r   r   bytesrc   lenr   s     r    test_rbU_produces_bytes_readlinez4TestFileObjectBlock.test_rbU_produces_bytes_readline   s    g%%MM;<<< 112 2 
 

 	k!ne444[))1-----r   c                     t           j        dk    r|                     d           |                     ddd          }|                     |d         t
                     d S )Nr   r   r   rUr   r   r   )rY   r   r   r   r   r   r   s     r   test_rU_produces_nativez+TestFileObjectBlock.test_rU_produces_native   sh    g%%MM;<<<112 2 
 

 	k!nc22222r   c                 l    |                      ddd          }|                     |t                     d S )N   line1
r2   readliner   r   r   s     r   test_r_readline_produces_nativez3TestFileObjectBlock.test_r_readline_produces_native   sC    11 2 
 

 	k3/////r   c                 n    |                      dddd          }|                     |t                     d S )Nr   r2   r   F)r   r   r   r   s     r   *test_r_readline_on_fobject_produces_nativez>TestFileObjectBlock.test_r_readline_on_fobject_produces_native   sF    11	 2 
 
 	k3/////r   c                     t          j                    \  }}|                     |          }|                     |d          }|                                 |                                 d S )Nr3   )r   r1   rK   r   )r   r2   r3   xys        r   test_close_pipez#TestFileObjectBlock.test_close_pipe   sS    wyy1MM!MM!S!!										r   c                                           d          \                                 }t          j                  }t          j        rdn}                     |j                                        |j        |            G fddt                    }                      |            d          } 	                    t                    5  t          |d           d d d            n# 1 swxY w Y   |                                  	                    t                    5  t          |d           d d d            n# 1 swxY w Y   |                                 	 |                                 n# t          $ r Y nw xY w                     |j                                        |j        |            fd} |           t                    5 } ||           d d d            n# 1 swxY w Y   t          j                  5 } ||           d d d            d S # 1 swxY w Y   d S )Nz#.gevent_test_named_path_after_closez<fdopen>c                   :    e Zd Z fdZd xZxZxZxZZd xZ	Z
dS );TestFileObjectBlock.test_name_after_close.<locals>.Namelessc                     S r   r8   )r   r-   s    r   r-   zBTestFileObjectBlock.test_name_after_close.<locals>.Nameless.fileno  s    r   c                     dS )NFr8   rC   s    r   <lambda>zDTestFileObjectBlock.test_name_after_close.<locals>.Nameless.<lambda>  s    e r   c                     dS )NTr8   rC   s    r   r   zDTestFileObjectBlock.test_name_after_close.<locals>.Nameless.<lambda>  s    t r   N)r5   r6   r7   r-   r   r   isattyclosedwritablers   readable)r-   s   r   Namelessr     sQ            9K9KKEKEKFKVh"3"33Hxxxr   r   rU   namec                                          |           }                    |j                   |                                                     |j                   d S r   )rK   rc   r   r   )argr!   r.   r   s     r   checkz8TestFileObjectBlock.test_name_after_close.<locals>.check)  sW    c""AQVT***GGIIIQVT*****r   )r/   rK   r   fdopen	greentestPY2rc   r   objectrb   AttributeErrorr|   r   r   rp   r{   )	r   r!   nfnf_namer   namelessr   r-   r.   s	   `      @@r   test_name_after_closez)TestFileObjectBlock.test_name_after_close  s_    }}%JKK MM&!!Yv !*9**6((('***
	4 	4 	4 	4 	4 	4 	4v 	4 	4 	4 ==T22~.. 	& 	&Hf%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&~.. 	& 	&Hf%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	
				HHJJJJ 	 	 	D	 	((('***	+ 	+ 	+ 	+ 	+ 	+ 	d $ZZ 	2E"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 WT]] 	bE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   C55C9<C9.EEE+F   
FF&G>>HHH66H:=H:c                                           d          \  }}t          j        |d           t          j        |           t	          d          t                     fd}                     |d          5  |dd            |dd	            |dd
            |dd           d d d            d S # 1 swxY w Y   d S )Nz.gevent_test_readintos   hello world    c                                          d |                    }                    |t          |                                         d |         |           d S r   )readintorc   r   )
byte_countexpected_data
bytes_readbufr!   mbufr   s      r   assertReadIntoz@TestFileObjectBlock.test_readinto_serial.<locals>.assertReadIntoD  s`    D*$566JZ]););<<<S*-}=====r   rU      s   he      ls   lo worldr   )r/   r   r   r   	bytearray
memoryviewrK   )r   r-   r.   r   r   r!   r   s   `   @@@r   test_readinto_serialz(TestFileObjectBlock.test_readinto_serial;  s;   }}%<==
(((
mm#	> 	> 	> 	> 	> 	> 	> 	>
 ]]4&& 	$!N1e$$$N1d###N2{+++N2s###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   1C  CC)rd   T)r5   r6   r7   r   r=   rD   rK   rO   rN   rj   rm   r$   ry   r   r   r   r   r   r   r   r   r   r   ignores_leakcheckr   r   __classcell__)r@   s   @r   r:   r:   ?   s         $
 
 
 
 
* * *7 7 7, , ,0 0 0<  # # # %4 4 %$4: 7;   2 %0 0 %$0
 %0 0 %$0 %  %$
 %. . %$. %3 3 %$3 %0 0 %$0 %0 0 %$0   % 6 6 !  %$6p %$ $ %$$ $ $ $ $r   r:   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ConcurrentFileObjectMixinc                 B   |                                  \  }}|                     |d          }|                     |           |                     |d          }|                     |           |                     t	          |d          t          |                     d S )NrU   r3   read1)r4   rK   _close_on_teardownrr   hasattrdir)r   r2   r3   readerrg   s        r   test_read1_binary_presentz3ConcurrentFileObjectMixin.test_read1_binary_presentT  s    zz||1q$'''''q#&&'''00#f++>>>>>r   c                 ,   |                                  \  }}|                     |d          }|                     |           |                     t          j        |           |                     t          |d          t          |                     d S )Nrtr   )	r4   rK   r   r*   r   r   assertFalser   r   r   r2   r3   r   s       r   test_read1_text_not_presentz5ConcurrentFileObjectMixin.test_read1_text_not_present]  s|    zz||1q$'''''!$$$113v;;?????r   c                    |                                  \  }}|                     t          j        |           |                     |          }|                     |           |                     t          |d                     d S )Nr   )r4   r*   r   r   rK   r   r   r   r   s       r   test_read1_defaultz,ConcurrentFileObjectMixin.test_read1_defaulte  st     zz||1!$$$q!!'''1122222r   c                    |                                  \  }}|                     |dd          }|                     |dd          }|                     |           |                     |           |                    d           |                    d          }|                     |d           |                    dg           |                    d          }|                     |d           d S )NrU   r   )bufsizerQ      ar      2)r4   rK   r   r   rd   rc   
writelines)r   r2   r3   r   r   bs         r   test_bufsize_0z(ConcurrentFileObjectMixin.test_bufsize_0n  s    zz||1MM!T1M--MM!T1M--""""""	FF1IID!!!	dVFF1IID!!!!!r   c                    dd l }|                                 \  }}g d}t          j        t          |                     |d          |          }	 |                                5  t          j        dk    rd}| 	                    d           n|
                    dt                     d}|                     ||          }d d d            n# 1 swxY w Y   |                                }|                                 |                     d	|           |                                 d S # |                                 w xY w)
Nr   )r   s   line2s   line3
s   line4
line5s   
line6rQ   r   r2   r   rT   r   z#line1
line2
line3
line4
line5
line6)r]   r4   geventspawnr   rK   r^   rY   r   r   r_   DeprecationWarningrd   r   rc   kill)	r   r]   r2   r3   linesgmoder   results	            r   test_newlinesz'ConcurrentFileObjectMixin.test_newlines}  sd   zz||1UUULq$!7!7??	((** 	. 	.#g--DMM"CDDDD ))(4FGGGD}}Q--	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. YY[[FJJLLLGPPPFFHHHHHAFFHHHHs2   D+ $AC D+ CD+ CAD+ +Ec                    |                                  \  }}|                     |                     |d                    }|                     |                     |d                    }t          j        t
          |dg          }	 t          d          }t          d          }|                    |          }|                    |          }	|                     |d           |                     |d |         d           |                     |	d           |	                                 d S # |	                                 w xY w)NrU   rQ   s   hellor   r   r   )
r4   r   rK   r   r   r   r   r   rc   r   )
r   r2   r3   rfwfr   buf1buf2n1n2s
             r   test_readintoz'ConcurrentFileObjectMixin.test_readinto  s    zz||1$$T]]1d%;%;<<$$T]]1d%;%;<<LhZ00	R==DR==DT""BT""BR###T#2#Y111R###FFHHHHHAFFHHHHs   BD/ /EN)	r5   r6   r7   r   r   r   r   r   r  r8   r   r   r   r   P  sq        ? ? ?@ @ @3 3 3" " "  .    r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestFileObjectThreadc                     t           j        S r   )r   FileObjectThreadrC   s    r   rD   z$TestFileObjectThread._getTargetClass  s    **r   c                 2    |                      d           d S )NFrl   ri   rC   s    r   test_del_noclosez%TestFileObjectThread.test_del_noclose  s    
 	U#####r   c                 *    t          j        d          NzRace conditionsunittestSkipTestrC   s    r   rj   zTestFileObjectThread.test_del       1222r   c                 *    t          j        d          r  r  rC   s    r   rm   z#TestFileObjectThread.test_del_close  r  r   N)r5   r6   r7   rD   r	  rj   rm   r8   r   r   r  r    sP        + + +$ $ $ 3 3 33 3 3 3 3r   r  FileObjectPosixzNeeds FileObjectPosixc                   :    e Zd Zej        r	ej        rdZd Zd ZdS )TestFileObjectPosixFc                     t           j        S r   )r   r  rC   s    r   rD   z#TestFileObjectPosix._getTargetClass  rE   r   c                    |                                  \  }}|                     t                    5 }t          j        |dt          j                   d d d            n# 1 swxY w Y   |j        }|                     t                    5 }|                     |dd          }|j	        
                    d           d d d            n# 1 swxY w Y   |j        }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     t          |          t          |                     d S )Nr   r2   Frl   )r4   rb   r   r   lseekSEEK_SET	exceptionrV   rK   fileiorq   rc   errnostrerrorrI   r   )r   r2   _wctxos_exr!   io_exs          r   test_seek_raises_ioerrorz,TestFileObjectPosix.test_seek_raises_ioerror  s    

2w'' 	(3HQ2;'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(w'' 	3aE22A HMM!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ek222888UZ000USZZ00000s#   !AA#&A#3C

CCN)	r5   r6   r7   r
   LIBUVLINUXr   rD   r   r8   r   r   r  r    sO         } ) ) $) * * *1 1 1 1 1r   r  c                       e Zd Zd ZdS )TestTextModec                    t          j                     |                     d          \  }}t          j        |           t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |d          5 }|                                }d d d            n# 1 swxY w Y   |                     |t          j	        
                    d                     d S )Nz%.gevent.test__fileobject.test_defaultr3   
rU   ascii)r   get_hubr/   r   r   rp   r   rd   rc   linesepr   )r   r-   r.   r!   datas        r    test_default_mode_writes_linesepz-TestTextMode.test_default_mode_writes_linesep  sF   
 	}}%LMM
$__ 	GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $ 	6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rz0099:::::s$   A22A69A6B..B25B2N)r5   r6   r7   r+  r8   r   r   r$  r$    s#        ; ; ; ; ;r   r$  c                   \   e Zd Zd Zd Zd Zd Zd Z edd           ed	d
           edd           edd           edd           edd           edd           edd           edd           eddd           eddd           ed dd!"          fZd# Z	d$S )%TestOpenDescriptorc                     t           S r   r   rC   s    r   rD   z"TestOpenDescriptor._getTargetClass  s    r   c                 6     |                                  |i |S r   rG   rH   s      r   rK   zTestOpenDescriptor._makeOne  rL   r   c                 ~    |                      ||          5   | j        |i | d d d            d S # 1 swxY w Y   d S r   )assertRaisesRegexrK   )r   regexkindrI   rJ   s        r   _checkzTestOpenDescriptor._check  s    ##D%00 	+ 	+DM4*6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   266c                     | t           |fS r   )	TypeErrorrerJ   s     r   r   zTestOpenDescriptor.<lambda>  s    Y 7 r   c                     | t           |fS r   )
ValueErrorr7  s     r   r   zTestOpenDescriptor.<lambda>  s    Z 8 r   r   *   )r   r   nope)r   r   )r   errors)r=  aoeugzmode U cannot be combinedwUztext and binaryrtbzappend mode at oncerwzexactly one+ztake an encodingrU   r'  )r   r   ztake an errorsstrict)r   r=  ztake a newliner&  )r   newlinec                 $   ddl m} |                                 \  }}|                     |dddd          }|                     |j                   |                                }|                     ||           t          j	        |           d S )Nr   )WriteallMixinrQ   FT)r   closefdatomic_write)
gevent._fileobjectcommonrF  r4   rK   rr   rH  openedr   r   r   )r   rF  r-   r  descr   s         r   test_atomicwrite_fdz&TestOpenDescriptor.test_atomicwrite_fd   s    ::::::ZZ\\
}}VT'(%**.  0 0 	)***{{}}dM222
r   N)
r5   r6   r7   rD   rK   r4  casevaseCASESrL  r8   r   r   r-  r-    sM         7 7 7+ + + 87D88DV"[F+++Z"%%%Xb!!!V'"""(t444U+++"...]%%%dW===D:::D$777E    r   r-  c            	          t           j        D ]8\  } }}t          t           d|                     dd          z   | ||fd           9d S )Ntest_ _c                 "     | j         ||dfi |S )Nr   )r4  )r   _re_kind_kws       r   r   zpop.<locals>.<lambda>2  s     KDKUTU<]<]Y\<]<] r   )r-  rO  setattrreplace)r2  r3  rJ   s      r   poprZ  .  sd    17 
 
tV%--S*A*A A"$F]]]	
 	
 	
 	

 
r   zNo support for non-blocking IOc                       e Zd Zd ZdS )TestGreenOpenDescriptonc                     t           S r   r   rC   s    r   rD   z'TestGreenOpenDescripton._getTargetClass8  s    ""r   N)r5   r6   r7   rD   r8   r   r   r\  r\  6  s#        # # # # #r   r\  __main__)(
__future__r   r   r"   r>   r{   r   rY   r(   r  r   r   rI  r   gevent._fileobjectposixr	   ImportErrorgevent.testingtestingr   r
   r   r   r$   r   r&   TestCaser:   r   r  
skipUnlessr   r  r$  r-  rZ  skipIfr\  r5   mainr8   r   r   <module>rh     sB   % % % % % % & & & & & &     				 				 				 



          3 3 3 3 3 3;;;;;;;    # " " " " " " " " " " "
          6   N$ N$ N$ N$ N$,#,N$ N$ N$bX X X X X X X Xv3 3 3 3 34.3 3 3: GJ)** !1 !1 !1 !1 !13-!1 !1	 !1F; ; ; ; ;<!2 ; ; ;() ) ) ) )y'9 ) ) )V
 
 
 $,.NOO# # # # #0 # # PO# zIN s   A A
A