+
    BiH                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ]
P"                  ! R	R
7       ]P$                  t^ tRt]! ] R4      '       d   ^ RItR	t]P.                  P1                  ]P.                  P3                  ]4      ;'       g    ]P6                  RR4      t]P.                  P1                  ]P.                  P3                  ]4      ;'       g    ]P6                  RR4      t]! ]R4      tRtRt  ! R R]PB                  4      t" ! R R]PF                  ]PH                  4      t% ! R R]4      t&]'       d   ^ RI'H(t(  ! R R](]"4      t)] ! R R]&4      4       t*] ! R R]&4      4       t+ ! R  R!]4      t,R" t-].R#8X  d   ]P^                  ! 4        R# R# )$    N)TestCase
skipUnless)support)hashlib_helper)socket_helper)threading_helper)asynchat)asyncoreT)moduleFPOP3_SSLcertdatazkeycert3.pemzpycacert.pemzSSL not supporteds   1 1
2 2
3 3
4 4
5 5
.
st   From: postmaster@python.org
Content-Type: text/plain
MIME-Version: 1.0
Subject: Dummy

line1
line2
line3
.
c                      a  ] tR t^2t o R. RR./tRtR tR tR tR t	R	 t
R
 tR tR tR tR t]tR t]tR tR tR tR tR tR tR tR t]'       d   R tR tR tRtV t R# RtV t R# )DummyPOP3HandlerUIDLIMPLEMENTATIONzpython-testlib-pop-serverFc                    \         P                  P                  W4       V P                  R 4       . V n        V P                  R4       RV n        RV n        R# )   
(+OK dummy pop3 server ready. <timestamp>FN)r	   
async_chat__init__set_terminator	in_bufferpush
tls_activetls_startingselfconns   &&'/usr/lib/python3.14/test/test_poplib.pyr   DummyPOP3Handler.__init__7   sG    $$T0G$		<=!    c                <    V P                   P                  V4       R # N)r   appendr   datas   &&r   collect_incoming_data&DummyPOP3Handler.collect_incoming_data?   s    d#r!   c                   R P                  V P                  4      p\        VR4      p. V n        VP                  R4      ^ ,          P	                  4       pVP                  R4      pVR8w  d   W^,           R pMRp\        V RV,           4      '       d   \        V RV,           4      pV! V4       R# V P                  RV,          4       R# )r!   
ISO-8859-1 N cmd_z$-ERR unrecognized POP3 command "%s".)	joinr   strsplitlowerfindhasattrgetattrr   )r   linecmdspaceargmethods   &     r   found_terminator!DummyPOP3Handler.found_terminatorB   s    xx'4&jjoa &&(		#B;qyz"CC4#&&T6C<0F3KII<cABr!   c                    h r#    r   s   &r   handle_errorDummyPOP3Handler.handle_errorR       r!   c                p    \         P                  P                  WP                  R 4      R,           4       R# )r*   r   N)r	   r   r   encoder%   s   &&r   r   DummyPOP3Handler.pushU   s$      {{<'@7'JKr!   c                (    V P                  V4       R # r#   r   r   r9   s   &&r   cmd_echoDummyPOP3Handler.cmd_echoX   s    		#r!   c                X    VR 8w  d   V P                  R4       V P                  R4       R# )guidoz-ERR no such userz+OK password requiredNrG   rH   s   &&r   cmd_userDummyPOP3Handler.cmd_user\   s#    '>II)*		)*r!   c                X    VR 8w  d   V P                  R4       V P                  R4       R# )pythonz-ERR wrong passwordz+OK 10 messagesNrG   rH   s   &&r   cmd_passDummyPOP3Handler.cmd_passa   s#    (?II+,		#$r!   c                (    V P                  R 4       R# )z
+OK 10 100NrG   rH   s   &&r   cmd_statDummyPOP3Handler.cmd_statf   s    		,r!   c                    V'       d   V P                  R V: RV: 24       R# V P                  R4       \        P                  P                  V \        4       R# )z+OK r+   z+OKN)r   r	   r   	LIST_RESPrH   s   &&r   cmd_listDummyPOP3Handler.cmd_listi   s8    IIS#./IIe$$T95r!   c                    V P                  R \        \        4      ,          4       \        P                  P                  V \        4       R# )z+OK %s bytesN)r   len	RETR_RESPr	   r   rH   s   &&r   cmd_retrDummyPOP3Handler.cmd_retrr   s-    		.#i.01  y1r!   c                (    V P                  R 4       R# )z +OK message marked for deletion.NrG   rH   s   &&r   cmd_deleDummyPOP3Handler.cmd_delex   s    		45r!   c                (    V P                  R 4       R# z+OK done nothing.NrG   rH   s   &&r   cmd_noopDummyPOP3Handler.cmd_noop{       		%&r!   c                (    V P                  R 4       R# rc   rG   rH   s   &&r   cmd_rpopDummyPOP3Handler.cmd_rpop~   rf   r!   c                (    V P                  R 4       R# rc   rG   rH   s   &&r   cmd_apopDummyPOP3Handler.cmd_apop   rf   r!   c                H    V P                  R 4       V P                  4        R# )z+OK closing.N)r   close_when_donerH   s   &&r   cmd_quitDummyPOP3Handler.cmd_quit   s    		.!r!   c                v    \        V P                  4      pV P                  '       g   \        '       d   . VR &   V# )STLS)dictCAPASr   SUPPORTS_SSL)r   _capass   & r   
_get_capasDummyPOP3Handler._get_capas   s+    djj!<<F6Nr!   c                <   V P                  R 4       V P                  4       '       dd   V P                  4       P                  4        FA  w  r#V.pV'       d   VP                  V4       V P                  RP	                  V4      4       KC  	  V P                  R4       R# )z+OK Capability list followsr+   .N)r   rw   itemsextendr/   )r   r9   capparams_lns   &&   r   cmd_capaDummyPOP3Handler.cmd_capa   so    		/0??#0668eJJv&		#((3-(	  9
 			#r!   c                \    T P                  V P                  '       d	   R 4       R# R4       R# )z+OK I know RFC6856z-ERR What is UTF8?!N)r   enable_UTF8rH   s   &&r   cmd_utf8DummyPOP3Handler.cmd_utf8   s'    		%%% ' 	.,	.r!   c                   V P                   R J d   V P                  R4       \        P                  ! \        P                  4      pVP                  \        4       VP                  V P                  RR R R7      pV P                  4        V P                  V4       RV n         RV n        . V n        V P                  4        R# V P                  R4       R# )Fz+OK Begin TLS negotiationT)server_sidedo_handshake_on_connectsuppress_ragged_eofsz*-ERR Command not permitted when TLS activeN)r   r   ssl
SSLContextPROTOCOL_TLS_SERVERload_cert_chainCERTFILEwrap_socketsocketdel_channel
set_socketr   r   _do_tls_handshake)r   r9   contexttls_socks   &&  r   cmd_stlsDummyPOP3Handler.cmd_stls   s    %'		56..)@)@A''1"..t{{;?GLDI / K   ")"&$(!!#&&(		FGr!   c                    V P                   P                  4        R V n        RV n        R#   \        P
                   d   pTP                  ^ ,          \        P                  \        P                  39   d    Rp?R# TP                  ^ ,          \        P                  8X  d   T P                  4       u Rp?# RTP                  ^,          9   g   RTP                  ^,          9   d   T P                  4       u Rp?# h Rp?i\         dG   pTP                  ^ ,          \        P                  8X  d   T P                  4       u Rp?#  Rp?R# Rp?ii ; i)TFNSSLV3_ALERT_BAD_CERTIFICATESSLV3_ALERT_CERTIFICATE_UNKNOWN)r   do_handshaker   r   r   SSLErrorargsSSL_ERROR_WANT_READSSL_ERROR_WANT_WRITESSL_ERROR_EOFhandle_closeOSErrorerrnoECONNABORTED)r   errs   & r   r   "DummyPOP3Handler._do_tls_handshake   s    *((*  #'$)!! << 
88A;3#:#:#&#;#;#= =XXa[C$5$55,,..3sxx{B7388A;F,,.. /88A;%"4"44,,.. 5/sK   , E6C>=5C>2E8?C>7E=C>>EE5EEEc                    V P                   '       d   V P                  4        R #  \        P                  P	                  V 4       R #   \
        P                   d    T P                  4         R # i ; ir#   )r   r   r	   r   handle_readr   SSLEOFErrorr   r?   s   &r   r   DummyPOP3Handler.handle_read   sR       &&((''33D9 (%%'(s   A %A0/A0r   r   r   N)!__name__
__module____qualname____firstlineno__rt   r   r   r'   r;   r@   r   rI   rM   rQ   rT   rX   cmd_uidlr]   cmd_topr`   rd   rh   rk   ro   rw   r   r   ru   r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   2   s     R),G+HIEK"$C L+
%
 6 H2 G6'''.
 	H$	**	( 	(S r!   r   c                   r   a  ] tR t^t o ]t]P                  3R ltR t	R t
R tR tR t]tR tR tR	tV tR
# )DummyPOP3Serverc                   \         P                  P                  V 4       \        P                  P                  V 4       R V n        V P                  V\        P                  4       V P                  V4       V P                  ^4       RV n        \         P                  ! 4       V n        V P                  P                  4       R,          w  V n        V n        RV n        R# )TF:N   NN)	threadingThreadr   r
   
dispatcherdaemoncreate_socketr   SOCK_STREAMbindlistenactiveLockactive_lockgetsocknamehostporthandler_instance)r   addressafs   &&&r   r   DummyPOP3Server.__init__   s    !!$'$$T*2v112		'A$>>+#{{668<	49 $r!   c                    \         P                  ! 4       V n        \         P                  P	                  V 4       V P                  P                  4        R # r#   )r   Event_DummyPOP3Server__flagr   startwaitr?   s   &r   r   DummyPOP3Server.start   s4    oo't$r!   c                   R V n         V P                  P                  4         V P                   '       dN   \        P                  '       d8   V P
                  ;_uu_ 4        \        P                  ! R^R7       RRR4       K_  \        P                  ! R R7       R#   + '       g   i     K  ; i  \        P                  ! R R7       i ; i)Tg?)timeoutcountN)
ignore_all)r   r   setr
   
socket_mapr   loop	close_allr?   s   &r   runDummyPOP3Server.run   s    	0+++("5"5"5%%%MM#Q7 &% $/ &%% $/s.   B/ B/ B/ B8
B/ B,	&	B/ /Cc                4    R V n         V P                  4        R# FN)r   r/   r?   s   &r   stopDummyPOP3Server.stop   s    		r!   c                2    V P                  V4      V n        R # r#   )handlerr   )r   r   addrs   &&&r   handle_acceptedDummyPOP3Server.handle_accepted   s     $T 2r!   c                &    V P                  4        R # r#   )closer?   s   &r   handle_connectDummyPOP3Server.handle_connect   s    

r!   c                    ^ # )r   r>   r?   s   &r   writableDummyPOP3Server.writable   s    r!   c                    h r#   r>   r?   s   &r   r@   DummyPOP3Server.handle_error   rB   r!   )__flagr   r   r   r   r   r   N)r   r   r   r   r   r   r   AF_INETr   r   r   r   r   r   r   r   r@   r   r   r   s   @r   r   r      sC     G#)>> 
%0
3 K r!   r   c                   0  a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR t]P&                  ! RRR7      R 4       t]P&                  ! RRR7      R 4       tR tR tR tR tR tR t]R 4       t]R 4       t]R 4       tRt V t!R# ) TestPOP3Classi  c                *    V P                  VR 4       R# )   +OKN)assertStartsWithr   resps   &&r   assertOKTestPOP3Class.assertOK  s    dF+r!   c                   \        \        \        34      V n        V P                  P	                  4        \
        P                  ! V P                  P                  V P                  P                  \        P                  R 7      V n        R# r   N)r   HOSTPORTserverr   poplibPOP3r   r   test_supportLOOPBACK_TIMEOUTclientr?   s   &r   setUpTestPOP3Class.setUp  sT    %tTl3kk$++"2"2DKK4D4D*6*G*GIr!   c                |    V P                   P                  4        V P                  P                  4        R V n        R # r#   )r  r   r   r   r?   s   &r   tearDownTestPOP3Class.tearDown  s)    r!   c                Z    V P                  V P                  P                  4       R 4       R# )s(   +OK dummy pop3 server ready. <timestamp>N)assertEqualr  
getwelcomer?   s   &r   test_getwelcomeTestPOP3Class.test_getwelcome  s#    //1D	Fr!   c                p    V P                  \        P                  V P                  P                  R 4       R# )z	echo -errN)assertRaisesr   error_protor  	_shortcmdr?   s   &r   test_exceptionsTestPOP3Class.test_exceptions  s$    &,,dkk.C.C[Qr!   c                    V P                  V P                  P                  R 4      4       V P                  \        P
                  V P                  P                  R4       R# )rL   invalidN)r   r  userr  r   r  r?   s   &r   	test_userTestPOP3Class.test_user  s?    dkk&&w/0&,,dkk.>.>	Jr!   c                    V P                  V P                  P                  R 4      4       V P                  \        P
                  V P                  P                  R4       R# )rP   r  N)r   r  pass_r  r   r  r  r?   s   &r   
test_pass_TestPOP3Class.test_pass_  s?    dkk''12&,,dkk.>.>	Jr!   c                  a V P                  V P                  P                  4       R4       V P                  P                  oV3R lpWP                  n        V P	                  \
        P                  4      ;_uu_ 4        V P                  P                  4        RRR4       V3R lpW P                  n        V P	                  \
        P                  4      ;_uu_ 4        V P                  P                  4        RRR4       V3R lpW0P                  n        V P                  P                  4       pV P                  VR4       SV P                  n        R#   + '       g   i     L; i  + '       g   i     Lx; i)
   c                 &   < V R 8X  d   R# S! V 4      # )STATr   r>   r7   original_shortcmds   &r   mock_shortcmd_invalid_format=TestPOP3Class.test_stat.<locals>.mock_shortcmd_invalid_format%  s    f}$S))r!   Nc                 &   < V R 8X  d   R# S! V 4      # )r   s   +OK abc defr>   r!  s   &r   mock_shortcmd_invalid_data;TestPOP3Class.test_stat.<locals>.mock_shortcmd_invalid_data.  s    f}%$S))r!   c                 &   < V R 8X  d   R# S! V 4      # )r   s   +OK 1 2 3 4 5r>   r!  s   &r   mock_shortcmd_extra_fields;TestPOP3Class.test_stat.<locals>.mock_shortcmd_extra_fields7  s    f}'$S))r!   )r  d   )   r   )r
  r  statr  r  r   r  )r   r#  r&  r)  resultr"  s   &    @r   	test_statTestPOP3Class.test_stat!  s    ))+Y7 KK11	*
 !=v1122KK 3	*
 !;v1122KK 3	*
 !;!!#( 1- 32 32s   ?EE*E'	*E:	c                    V P                  V P                  P                  4       R ,          . RO^34       V P                  V P                  P                  R4      R4       R# ):r,  NN1s   OK 1 1N)s   1 1s   2 2s   3 3s   4 4s   5 5)r
  r  listassertEndsWithr?   s   &r   	test_listTestPOP3Class.test_listC  sP    ))+B/B	 	DKK,,S19=r!   c                l    R . RO^q3pV P                   P                  R4      pV P                  W!4       R# )   +OK 116 bytesfooNs   From: postmaster@python.orgs   Content-Type: text/plains   MIME-Version: 1.0s   Subject: Dummyr!   s   line1s   line2s   line3)r  retrr
  )r   expectedr9  s   &  r   	test_retrTestPOP3Class.test_retrI  s:    $8 	
 kku%'r!   c                    V P                  \        P                  V P                  P                  R \        P
                  ^
,           R,          ,          4       R# )zecho +%saN)r  r   r  r  r  _MAXLINEr?   s   &r   test_too_long_lines!TestPOP3Class.test_too_long_linesR  s;    &,,dkk.C.C$2)=(DE	Gr!   c                Z    V P                  V P                  P                  R 4      4       R# r9  N)r   r  deler?   s   &r   	test_deleTestPOP3Class.test_deleV      dkk&&u-.r!   c                X    V P                  V P                  P                  4       4       R # r#   )r   r  noopr?   s   &r   	test_noopTestPOP3Class.test_noopY  s    dkk&&()r!   c                Z    V P                  V P                  P                  R 4      4       R# rE  )r   r  rpopr?   s   &r   	test_rpopTestPOP3Class.test_rpop\  rI  r!   md5T)opensslc                \    V P                  V P                  P                  R R4      4       R# )r9  dummypasswordN)r   r  apopr?   s   &r   test_apop_normalTestPOP3Class.test_apop_normal_  s    dkk&&uo>?r!   c                    R RR,          ,           p\         P                  ! V P                  RV4      ;_uu_ 4        V P                  \        P
                  V P                  P                  RR4       RRR4       R#   + '       g   i     R# ; i)r      <i@B welcomer@  kbN)r  	swap_attrr  r  r   r  rV  )r   evil_welcomes   & r   test_apop_REDOSTestPOP3Class.test_apop_REDOSc  s_     0##DKKLIIf00$++2B2BCN JIIIs   7A<<B	c                l    R . RO^q3pV P                  V P                  P                  ^^4      V4       R# )r8  Nr:  )r
  r  top)r   r<  s   & r   test_topTestPOP3Class.test_topn  s7    %4 	
 	A.9r!   c                p    V P                   P                  4        V P                   P                  R 4       R# rE  )r  uidlr?   s   &r   	test_uidlTestPOP3Class.test_uidlv  s$    r!   c                    R V P                   P                  n        V P                  \        P
                  V P                  P                  4       R# r   )r   r   r   r  r   r  r  utf8r?   s   &r   test_utf8_raises_if_unsupported-TestPOP3Class.test_utf8_raises_if_unsupportedz  s4    */'&,,dkk.>.>?r!   c                    R V P                   P                  n        RpV P                  P	                  4       pV P                  W!4       R# )Ts   +OK I know RFC6856N)r   r   r   r  rj  r
  )r   r<  r.  s   &  r   	test_utf8TestPOP3Class.test_utf8~  s9    *.'(!!#*r!   c                ~    V P                   P                  4       pV P                  R VP                  4       9   4       R# )r   Nr  capa
assertTruekeysr   rr  s   & r   	test_capaTestPOP3Class.test_capa  s,    {{!(DIIK78r!   c                    V P                   P                  4       pV P                  V4       V P                  V P                   P                  4       V P                  V P                   P
                  4       R # r#   )r  quitrs  assertIsNonesockfiler   s   & r   	test_quitTestPOP3Class.test_quit  sP    {{!$++**+$++**+r!   c                ~    V P                   P                  4       pV P                  R VP                  4       9   4       R# rr   Nrq  ru  s   & r   test_stls_capaTestPOP3Class.test_stls_capa  s+    {{!$))+-.r!   c                `    R pV P                   P                  4       pV P                  W!4       R# )   +OK Begin TLS negotiationN)r  stlsr
  )r   r<  r   s   &  r   	test_stlsTestPOP3Class.test_stls  s'    /{{!(r!   c                   R p\         P                  ! \         P                  4      pVP                  \        4       V P                  VP                  \         P                  4       V P                  VP                  R4       V P                  \         P                  4      ;_uu_ 4        V P                  P                  VR7      pRRR4       \        P                  ! RV P                  P                   \"        P$                  R7      V n        V P                  P                  VR7      pV P                  W14       R#   + '       g   i     L; i)r  Tr   N	localhostr   )r   r   PROTOCOL_TLS_CLIENTload_verify_locationsCAFILEr
  verify_modeCERT_REQUIREDcheck_hostnamer  CertificateErrorr  r  r   r   r   r   r  r  )r   r<  ctxr   s   &   r   test_stls_contextTestPOP3Class.test_stls_context  s    /nnS445!!&)#*;*;<++T2s3344;;##C#0D 5kk+t{{/?/?*6*G*GI{{,( 54s   )D==E	r  r   N)"r   r   r   r   r   r  r  r  r  r  r  r/  r5  r=  rB  rG  rL  rP  r   requires_hashdigestrW  r_  rc  rg  rk  rn  rv  r}  requires_sslr  r  r  r   r   r   s   @r   r   r     s     ,IFRKK 2D>(G/*/ ''t<@ =@ ''t<O =O: @+9, / / ) )
 ) )r!   r   )SSLConnectionc                   &   a  ] tR tRt o R tRtV tR# )DummyPOP3_SSLHandleri  c                    \         P                  P                  W4       V P                  4        V P	                  R 4       . V n        V P                  R4       RV n        RV n        R# )r   r   TFN)	r	   r   r   secure_connectionr   r   r   r   r   r   s   &&r   r   DummyPOP3_SSLHandler.__init__  sS    ((4""$(DNII@A"DO %Dr!   r   N)r   r   r   r   r   r   r   r   s   @r   r  r    s     	& 	&r!   r  c                   B   a  ] tR tRt o R tR tR tR t]tR t	Rt
V tR# )	TestPOP3_SSLClassi  c                    \        \        \        34      V n        \        V P                  n        V P                  P                  4        \        P                  ! V P                  P                  V P                  P                  4      V n        R # r#   )r   r   r   r   r  r   r   r   r   r   r   r  r?   s   &r   r  TestPOP3_SSLClass.setUp  sT    %tTl32oodkk&6&68H8HIr!   c                F    V P                  R \        P                  4       R# )r   N)assertInr   __all__r?   s   &r   test__all__TestPOP3_SSLClass.test__all__  s    j&..1r!   c                b   \         P                  ! \         P                  4      pR Vn        \         P                  Vn        V P                  P                  4        \        P                  ! V P                  P                  V P                  P                  VR7      V n        V P                  V P                  P                  \         P                  4       V P!                  V P                  P                  P"                  V4       V P%                  V P                  P'                  4       R4       R# )Fr  r   N)r   r   r  r  	CERT_NONEr  r  ry  r   r   r   r   r   assertIsInstancer{  	SSLSocketassertIsr   r   rK  )r   r  s   & r   test_contextTestPOP3_SSLClass.test_context  s    nnS445"--oodkk&6&68H8H035dkk..>dkk&&..4dkk..0&9r!   c                n    V P                  \        P                  V P                  P                  4       R # r#   r  r   r  r  r  r?   s   &r   r  TestPOP3_SSLClass.test_stls  "    &,,dkk.>.>?r!   c                ~    V P                   P                  4       pV P                  R VP                  4       9   4       R# r  r  rr  assertFalsert  ru  s   & r   r   TestPOP3_SSLClass.test_stls_capa  s-    {{!499;./r!   r  N)r   r   r   r   r  r  r  r  r  r  r   r   r   s   @r   r  r    s-     J2
:@ "0 0r!   r  c                   <   a  ] tR tRt o R tR tR t]tR tRt	V t
R# )TestPOP3_TLSClassi  c                J   \        \        \        34      V n        V P                  P	                  4        \
        P                  ! V P                  P                  V P                  P                  \        P                  R 7      V n        V P                  P                  4        R# r   )r   r   r   r   r   r   r   r   r   r  r  r  r  r?   s   &r   r  TestPOP3_TLSClass.setUp  sd    %tTl3kk$++"2"2DKK4D4D*6*G*GIr!   c                H   V P                   P                  e4   V P                   P                  e    V P                   P                  4        V P                  P                  4        R V n        R #   \        P
                   d    T P                   P                  4         LTi ; ir#   )	r  r|  r{  ry  r   r  r   r   r   r?   s   &r   r  TestPOP3_TLSClass.tearDown  sx    ;;'DKK,<,<,H$  " 	 %% $ !!#	$s   A/ //B! B!c                n    V P                  \        P                  V P                  P                  4       R # r#   r  r?   s   &r   r  TestPOP3_TLSClass.test_stls  r  r!   c                ~    V P                   P                  4       pV P                  R VP                  4       9   4       R# )s   STLSNr  ru  s   & r   r   TestPOP3_TLSClass.test_stls_capa  s-    {{!DIIK/0r!   r  N)r   r   r   r   r  r  r  r  r  r   r   r   s   @r   r  r    s'     @ "1 1r!   r  c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
TestTimeoutsi  c                .   \         P                  ! 4       V n        \        P                  ! \        P                  \        P
                  4      V n        V P                  P                  ^<4       \        P                  ! V P                  4      V n
        \         P                  ! V P                  V P                  V P                  3R7      V n        RV P                  n        V P                  P                  4        V P                  P!                  4        R# )<   )targetr   TN)r   r   evtr   r   r   r{  
settimeoutr   	bind_portr   r   r   threadr   r   r   r?   s   &r   r  TestTimeouts.setUp  s    ??$MM&..&2D2DE			R !++DII6	&&dkk499@UV!r!   c                H    V P                   P                  4        R V n         R # r#   )r  r/   r?   s   &r   r  TestTimeouts.tearDown  s    r!   c                   VP                  4        VP                  4         VP                  4       w  r4VP                  R 4       VP	                  4        VP	                  4        R#   \
         d     Li ; i  TP	                  4        i ; i)s   + Hola mundo
N)r   r   acceptsendr   TimeoutError)r   r  servr   r   s   &&&  r   r   TestTimeouts.server  sg    		JDII'(JJL JJL  		 JJLs#   3A' 'A52A8 4A55A8 8B
c                   V P                  \        P                  ! 4       4       \        P                  ! \        P
                  4        \        P                  ! \        V P                  4      p\        P                  ! R 4       V P                  VP                  P                  4       \        P
                  4       VP                  4        R #   \        P                  ! R 4       i ; ir#   )rz  r   getdefaulttimeoutsetdefaulttimeoutr  r  r   r   r   r   r
  r{  
gettimeoutr   r   pops   & r   testTimeoutDefaultTestTimeouts.testTimeoutDefault  s    &2245  !>!>?	+++dDII.C$$T*,,.0M0MN		 $$T*s   
%C C'c                   V P                  \        P                  ! 4       4       \        P                  ! ^4        \        P
                  ! \        V P                  RR7      p\        P                  ! R4       V P                  VP                  P                  4       4       VP                  4        R#   \        P                  ! R4       i ; i)   Nr   )rz  r   r  r  r   r   r   r   r{  r  r   r  s   & r   testTimeoutNoneTestTimeouts.testTimeoutNone#  s    &2245  $	+++dDIIt<C$$T*#((--/0		 $$T*s   'B4 4Cc                   \         P                  ! \        V P                  \        P
                  R 7      pV P                  VP                  P                  4       \        P
                  4       VP                  4        V P                  \        4      ;_uu_ 4        \         P                  ! \        V P                  ^ R 7       RRR4       R#   + '       g   i     R# ; ir   )r   r   r   r   r  r  r
  r{  r  r   r  
ValueErrorr  s   & r   testTimeoutValueTestTimeouts.testTimeoutValue-  s~    kk$		<3P3PQ,,.0M0MN		z**KKdii3 +***s   (CC	)r  r   r{  r  N)r   r   r   r   r  r  r   r  r  r  r   r   r   s   @r   r  r    s(     

4 4r!   r  c                  |    \         P                  ! 4       p \        P                  ! \         P                  .V O5!   R # r#   )r   threading_setupunittestaddModuleCleanupthreading_cleanup)thread_infos    r   setUpModuler  5  s*    "224K.@@O;Or!   __main__)0r   r   osr   r   r  r   r   testr   r  test.supportr   r   r   r	   r
   requires_working_socketr   r   ru   r4   r   pathr/   dirname__file__curdirr   r  r  rW   r\   r   r   r   r   r   r   test.test_ftplibr  r  r  r  r  r  r   mainr>   r!   r   <module>r     s     	    ) ( ' & ) ! !  $ $D 1
6:Lww||BGGOOH5BBJP^_HWW\\"''//(3@@ryy*n]F,(;< 8			[(x** [(z0h))9+;+; 0fc)H c)L .	&}.> 	& 0 0 0D 1 1 1B648 64rP
 zMMO r!   