+
    Bi1                        ^ RI Ht ^ RIHt ^ RIHt ^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ R	IHtHtHt  ^ RIt]P8                  ! R
R7       ]P:                  P=                  ]P:                  P?                  ] 4      ;'       g    ]PB                  RR4      t"]P:                  P=                  ]P:                  P?                  ] 4      ;'       g    ]PB                  RR4      t# ! R R]PH                  4      t%]'       d#    ! R R]	PL                  4      t']PP                  t(M ! R R4      t'Rt( ! R R]	PR                  4      t* ! R R]*4      t+ ! R R]*4      t, ! R R]*4      t- ! R R]*4      t. ! R R4      t/ ! R  R!]/]PH                  4      t0]Pb                  ! ]R"4       ! R# R$]/]PH                  4      4       t2 ! R% R&]PH                  4      t3]Pb                  ! ]R"4       ! R' R(]34      4       t4]5R)8X  d   ]Pl                  ! 4        R# R#   ] d    Rt ELi ; i)*    )support)socket_helper)contextmanagerN)verboserun_with_tzrun_with_localecpython_only)hashlib_helper)threading_helper)mock)datetimetimezone	timedeltaT)modulecertdatazkeycert3.pemzpycacert.pemc                      a  ] tR t^t o R t]! R4      R 4       tR t]! RRRR4      ]! R	4      R
 4       4       t	R t
]P                  R 4       tRtV tR# )TestImaplibc                   \         P                  ! R4      p\        P                  ! R4      pV P	                  \
        P                  ! V4      V4       \        P                  ! R4      pV P	                  \
        P                  ! V4      V4       \        P                  ! R4      pV P	                  \
        P                  ! V4      V4       R# )  s.   25 (INTERNALDATE "01-Jan-2000 00:00:00 +0000")s.   25 (INTERNALDATE "01-Jan-2000 11:30:00 +1130")s.   25 (INTERNALDATE "31-Dec-1999 12:30:00 -1130")N)	r      r   r   r   r   r   r   )calendartimegmimaplibInternaldate2tupleassertEqualtimemktime)selft0tts   &  (/usr/lib/python3.14/test/test_imaplib.pytest_Internaldate2tuple#TestImaplib.test_Internaldate2tuple!   s    __>?''=?R"-''=?R"-''=?R"-    zMST+07MDT,M4.1.0,M10.5.0c                z    V P                  \        P                  ! R 4      \        P                  ! R4      4       R# )s.   25 (INTERNALDATE "02-Apr-2000 02:30:00 +0000")s.   25 (INTERNALDATE "02-Apr-2000 03:30:00 +0000")N)assertNotEqualr   r   r   s   &r"   "test_Internaldate2tuple_issue10941.TestImaplib.test_Internaldate2tuple_issue10941-   s3    G66=?&&AC	Dr%   c                    R R\         P                  ! R 4      RR\        P                  ! R \	        \        ^ R4      4      4      R.# )i 5wg    eA"18-May-2033 05:33:20 +0200")	        r.   !      r   r   r   )	r-   r.   r/   r.   r0   r1   r   r   r   i   )r   	localtimer   fromtimestampr   r   r(   s   &r"   
timevaluesTestImaplib.timevalues4   sE    L$..*D43&&z'/	![0I'JL.0 	0r%   LC_ALLde_DEfr_FR zSTD-1DST,M3.2.0,M11.1.0c                    R pV P                  4        F*  p\        P                  ! V4      pV P                  W14       K,  	  R# )r,   N)r4   r   Time2Internaldater   )r   expectedtinternals   &   r"   test_Time2Internaldate"TestImaplib.test_Time2Internaldate<   s8    
 2"A003HX0 #r%   c                `    V P                  4        F  p\        P                  ! V4       K  	  R # N)r4   r   r;   )r   r=   s   & r"   ,test_that_Time2Internaldate_returns_a_result8TestImaplib.test_that_Time2Internaldate_returns_a_resultG   s#     "A%%a( #r%   c                &   \         P                   ! 4       ;_uu_ 4       p VP                  R \        P                  34       V P	                  R4       RRR4       \        P                  ! 4       pV P                  \        4      ;_uu_ 4       p\        P                  ! 4        RRR4       V P                  XP                  P                  V4       R#   \         P
                   d     Li ; i  + '       g   i     L; i  + '       g   i     Lf; i)r9   z3Cannot run the test with local IMAP server running.N)socketconnectr   
IMAP4_PORTskipTesterrorr   get_socket_conn_refused_errsassertRaisesOSErrorIMAP4assertIn	exceptionerrno)r   sexpected_errnoscms   &   r"   test_imap4_host_default_value)TestImaplib.test_imap4_host_default_valueN   s     ]]__		2w1123IK  (DDFw''2MMO (bll((/: <<  _ ('s4   C-2CD C*'C-)C**C--C=	 D	 N)__name__
__module____qualname____firstlineno__r#   r   r)   r4   r   r?   rC   r   skip_if_tcp_blackholerU   __static_attributes____classdictcell____classdict__s   @r"   r   r      sy     
. +,D -D0 Xw4 *+1 , 51) ((; );r%   r   c                   &   a  ] tR t^at o R tRtV tR# )SecureTCPServerc                    V P                   P                  4       w  r\        P                  ! \        P                  4      pVP                  \        4       VP                  VR R7      pWB3# )T)server_side)rF   acceptssl
SSLContextPROTOCOL_TLS_SERVERload_cert_chainCERTFILEwrap_socket)r   	newsocketfromaddrcontext
connstreams   &    r"   get_requestSecureTCPServer.get_requestc   sW    "&++"4"4"6InnS%<%<=G##H- ,,YD,IJ''r%   rW   N)rX   rY   rZ   r[   rp   r]   r^   r_   s   @r"   rb   rb   a   s     	( 	(r%   rb   c                       ] tR t^ntRtR# )rb   rW   NrX   rY   rZ   r[   r]   rW   r%   r"   rb   rb   n   s    r%   c                      a a ] tR t^tt o]P
                  tRtRtV 3R lt	R t
R tR tR tR tR	 tR
 tR tR tR tRtVtV ;t# )SimpleIMAPHandlerNr9   c                h   < \         SV `  4        R V P                  n        RV P                  n        R# )FN)supersetupserveris_selectedloggedr   	__class__s   &r"   rx   SimpleIMAPHandler.setupy   s$    "'!r%   c                    \         '       d!   \        R VP                  4       ,          4       V P                  P	                  V4       R# )zSENT: %rN)r   printstripwfilewriter   messages   &&r"   _sendSimpleIMAPHandler._send~   s,    7*w}}./

!r%   c                6    V P                  VR ,           4       R# )   
N)r   r   s   &&r"   
_send_lineSimpleIMAPHandler._send_line   s    

7W$%r%   c                F    V P                  VP                  R 4      4       R# )ASCIIN)r   encoder   s   &&r"   _send_textline SimpleIMAPHandler._send_textline   s    w/0r%   c                J    V P                  R P                  WV34      4       R# ) N)r   join)r   tagcoder   s   &&&&r"   _send_taggedSimpleIMAPHandler._send_tagged   s    CHHc%9:;r%   c                   V P                  R 4        Rp  V P                  P                  ^4      pVR8X  d   R# W,          pTP	                  R4      '       g   KG   \
        '       d!   \        RTP                  4       ,          4       T P                  '       d    T P                  P                  T4       K  TP                  R4      P                  4       pT^ ,          pT^,          pTR,          p\        T RT,           4      '       d9   \        T RT,           4      ! YF4      pT'       d   Ypn        \        T4       EK/  EK2  T P!                  TRTR	,           4       EKO    \         d     R# i ; i  \         d    RT n         Li ; i)
z* OK IMAP4rev1r%   Nr   zGOT: %rr   :   NNcmd_BADz unknown)r   rfilereadrM   endswithr   r   r   continuationsendStopIterationdecodesplithasattrgetattrnextr   )r   linepart	splitliner   cmdargsr   s   &       r"   handleSimpleIMAPHandler.handle   sO   ,- D::??1-Ds{LD ==))wi$**,./   -%%**40 G,224IA,CA,CR=DtVc\**&tVc\:3E(4%&   !!#ucJ.>?3   % -(,D%-s(   "E! E! E3 !E0/E03FFc                    V P                   '       d   R V P                   ,           MRpV P                  RV,           4       V P                  VRR4       R# )z
IMAP4rev1 	IMAP4rev1z* CAPABILITY OKCAPABILITY completedN)capabilitiesr   r   )r   r   r   capss   &&& r"   cmd_CAPABILITY SimpleIMAPHandler.cmd_CAPABILITY   sN    $$$ t000  	 	Od23#t%;<r%   c                p    R V P                   n        V P                  R4       V P                  VRR4       R # )Nz"* BYE IMAP4ref1 Server logging outr   zLOGOUT completed)ry   r{   r   r   r   r   r   s   &&&r"   
cmd_LOGOUTSimpleIMAPHandler.cmd_LOGOUT   s0    !@A#t%78r%   c                \    V^ ,          V P                   n        V P                  VRR4       R# )r   r   zLOGIN completedN)ry   r{   r   r   s   &&&r"   	cmd_LOGINSimpleIMAPHandler.cmd_LOGIN   s%    !!W#t%67r%   c                p    R V P                   n        V P                  R4       V P                  VRR4       R# )T
   * 2 EXISTSr   [READ-WRITE] SELECT completed.N)ry   rz   r   r   r   s   &&&r"   
cmd_SELECTSimpleIMAPHandler.cmd_SELECT   s-    "&&#t%EFr%   c                    V P                   P                  '       d'   R V P                   n        V P                  VRR4       R# V P                  VRR4       R# )Fr   z*Returned to authenticated state. (Success)r   zNo mailbox selectedN)ry   rz   r   r   s   &&&r"   cmd_UNSELECTSimpleIMAPHandler.cmd_UNSELECT   sD    ;;"""&+DKK#c4)UVc5*?@r%   )r   )rX   rY   rZ   r[   r   LOOPBACK_TIMEOUTtimeoutr   r   rx   r   r   r   r   r   r   r   r   r   r   r]   r^   __classcell__r}   r`   s   @@r"   ru   ru   t   s[     &&GLL"
"
&1<(@T=9
8G
A Ar%   ru   c                   *   a  ] tR t^t o RtR tRtV tR# )IdleCmdDenyHandlerIDLEc                ,    V P                  VR R4       R# )NOz IDLE is not allowed at this timeNr   r   s   &&&r"   cmd_IDLEIdleCmdDenyHandler.cmd_IDLE   s    #t%GHr%   rW   NrX   rY   rZ   r[   r   r   r]   r^   r_   s   @r"   r   r      s     LI Ir%   r   c                   *   a  ] tR t^t o RtR tRtV tR# )IdleCmdHandlerr   c              #    "   V P                  R 4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       \        P                  ! ^4       V P                  R4       Rx pVR	8X  d'   V P                  R
4       V P                  VRR4       R# V P                  VRR4       R# 5i)s
   * 0 EXISTS+ idlingr   s*   * 1 FETCH (BODY[HEADER.FIELDS (DATE)] {41})   Date: Fri, 06 Dec 2024 06:00:00 +0000

   )s
   * 3 EXISTSs
   * 1 RECENTN   DONE
s
   * 9 RECENTr   Idle completedr   Expected DONE)r   r   r   r   sleepr   r   r   r   rs   &&& r"   r   IdleCmdHandler.cmd_IDLE   s     &J'&EF

CD&

1&OOM*c4)9:c5/:s   C%C'rW   Nr   r_   s   @r"   r   r      s     L; ;r%   r   c                   *   a  ] tR t^t o RtR tRtV tR# )IdleCmdDelayedPacketHandlerr   c              #  T  "   V P                  R 4       V P                  R4       \        P                  ! R4       V P                  R4       \        P                  ! ^4       V P                  R4       Rx pVR8X  d   V P	                  VRR4       R# V P	                  VR	R
4       R# 5i)r   s   * 1 EXg?s   ISs   TS
Nr   r   r   r   r   )r   r   r   r   r   r   s   &&& r"   r   $IdleCmdDelayedPacketHandler.cmd_IDLE   s     J'

9

3

5

1

9c4)9:c5/:s   B&B(rW   Nr   r_   s   @r"   r   r      s     L; ;r%   r   c                   *   a  ] tR tRt o RtR tRtV tR# )AuthHandler_CRAM_MD5i  LOGINDISABLED AUTH=CRAM-MD5c              #     "   V P                  R 4       Rx pVR8X  d   V P                  VRR4       R# V P                  VRR4       R# 5iz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=Ns2   dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
r   zCRAM-MD5 successfulr   z	No accessr   r   r   s   &&& r"   cmd_AUTHENTICATE%AuthHandler_CRAM_MD5.cmd_AUTHENTICATE  sO      1 	2 / /c4)>?c45   AA	rW   NrX   rY   rZ   r[   r   r   r]   r^   r_   s   @r"   r   r     s     0L6 6r%   r   c                   v  a  ] tR tRt o RtR)R l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]P2                  ! R^
4      R 4       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'R& t(R' t)R(t*V t+R# )*NewIMAPTestsMixini  NTc                "    ! R RV P                   4      pV P                  V P                  4       V P                  \        P                  ^ 3V4      V n        \        P                  ! V P                  R,           V P
                  P                  RR/R7      V n
        RV P                  n        V P                  P                  4        V'       d*   V P                  ! V P
                  P                  !  V n        V P                  V P
                  3# )z
Sets up imap_handler for tests. imap_handler should inherit from either:
- SimpleIMAPHandler - for testing IMAP commands,
- socketserver.StreamRequestHandler - if raw access to stream is needed.
Returns (client, server).
c                   &   a  ] tR tRt o R tRtV tR# )/NewIMAPTestsMixin._setup.<locals>.TestTCPServeri  c                F    V P                  V4       V P                  4        h )z0
End request and raise the error if one occurs.
close_requestserver_closer   requestclient_addresss   &&&r"   handle_error<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_error  s!     ""7+!!#r%   rW   NrX   rY   rZ   r[   r   r]   r^   r_   s   @r"   TestTCPServerr     s      r%   r   z-serverpoll_interval{Gz?nametargetkwargsT)server_class
addCleanup_cleanupr   HOSTry   	threadingThread_testMethodNameserve_foreverthreaddaemonstart
imap_classserver_addressclient)r   imap_handlerrG   r   s   &&& r"   _setupNewIMAPTestsMixin._setup  s    	D-- 	 	&''););Q(?N&&%%i/;;,, $T*, "//4;;+E+EFDK{{DKK''r%   c                B   V P                   e6   V P                   P                  R8w  d   V P                   P                  4        V P                  P                  4        V P                  P	                  4        \
        P                  ! V P                  4       RV n        R# )z
Cleans up the test server. This method should not be called manually,
it is added to the cleanup queue in the _setup method already.
NLOGOUT)r  stateshutdownry   r   r   join_threadr  r(   s   &r"   r  NewIMAPTestsMixin._cleanup4  sh     ;;"t{{'8'8H'DKK  "  "$$T[[1r%   c                     ! R  R\         P                  4      pV P                  VRR7      w  r#V P                  ! \        P
                  P                  V P                  .VP                  O5!   R# )c                   &   a  ] tR tRt o R tRtV tR# )ONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandleriF  c                <    V P                   P                  R 4       R# s   * OKNr   r   r(   s   &r"   r   VNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleG  s    

  )r%   rW   NrX   rY   rZ   r[   r   r]   r^   r_   s   @r"   
EOFHandlerr  F  s     * *r%   r"  FrG   N)	socketserverStreamRequestHandlerr  rL   r   rN   abortr  r  )r   r"  _ry   s   &   r"   )test_EOF_without_complete_welcome_message;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messageD  sX    	*:: 	* KK
EK:	'----t 	2!00	2r%   c                     ! R  R\         4      pV P                  VRR7      w  r#V P                  ! \        P                  P
                  V P                  .VP                  O5!   R# )c                   &   a  ] tR tRt o R tRtV tR# )BNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandleriN  c                N    V P                  R 4       V P                  VRR4       R# s   * CAPABILITY IMAP4rev1 AUTH
r   r   Nr   r   r   s   &&&r"   r   QNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYO  "    

;<!!#t-CDr%   rW   NrX   rY   rZ   r[   r   r]   r^   r_   s   @r"   BadNewlineHandlerr,  N  s     E Er%   r3  Fr#  N)ru   r  rL   r   rN   r&  r  r  )r   r3  r'  ry   s   &   r"   test_line_termination'NewIMAPTestsMixin.test_line_terminationM  sV    	E 1 	E KK 15KA	'----t 	2!00	2r%   c                t    ! R  R\         4      pV P                  V4      w  r#V P                  VP                  4       V P	                  \
        P                  P                  R4      ;_uu_ 4        VP                  R4       RRR4       V P                  VP                  4       R#   + '       g   i     L-; i)c                       ] tR tRtRtRtR# )MNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandleriW  AUTH ENABLE UTF8=ACCEPTrW   NrX   rY   rZ   r[   r   r]   rW   r%   r"   EnableHandlerr8  W  s    4Lr%   r;  zENABLE.*NONAUTHfooN)	ru   r  assertFalseutf8_enabledassertRaisesRegexr   rN   rJ   enable)r   r;  r  r'  s   &   r"   $test_enable_raises_error_if_not_AUTH6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHV  s    	5- 	5KK.	,,-##GMM$7$79JKKMM%  L,,- LKs   0B''B7	c                    V P                  \        4      w  rV P                  \        P                  P
                  R 4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)does not support ENABLEr<  N)r  ru   r?  r   rN   rJ   r@  r   r  r'  s   &  r"   )test_enable_raises_error_if_no_capability;NewIMAPTestsMixin.test_enable_raises_error_if_no_capability_  sV    KK 12	##GMM$7$7)+ +MM% + + + +s   
A&&A7	c                @   V P                  \        4      w  rVP                  R R4      w  r4V P                  VR4       V P	                  \
        P                  P                  R4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)userpassr   rD  UTF8=ACCEPTN)	r  ru   loginr   r?  r   rN   rJ   r@  r   r  r'  typdatas   &    r"   .test_enable_UTF8_raises_error_if_not_supported@NewIMAPTestsMixin.test_enable_UTF8_raises_error_if_not_supportede  sx    KK 12	LL0	d###GMM$7$7)+ +MM-(+ + + +s   0BB	c                `    ! R  R\         4      pV P                  V4      w  r#V P                  VP                  R4       VP	                  RR 4      w  rEV P                  VR4       V P                  VP
                  R4       VP                  R4      w  rEV P                  VR4       V P                  VP                  R4       R	pVP                  R
R
R
VP                  R4      4      w  rxV P                  VR4       V P                  VP
                  RV,          P                  R4      4       R
# )c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )HNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServerin  zENABLE UTF8=ACCEPTc                ,    V P                  VR R4       R# r   zENABLE successfulNr   r   s   &&&r"   
cmd_ENABLESNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEp      !!#t-@Ar%   c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5i+Nr   zFAKEAUTH successfulr   ry   responser   r   s   &&&r"   r   YNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEr  2     ##C(',$!!#t-BC   :<c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir\  Nr   okayr]  r   s   &&&r"   
cmd_APPENDSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDv  1     ##C(',$!!#tV4ra  rW   N)
rX   rY   rZ   r[   r   rW  r   re  r]   r^   r_   s   @r"   UTF8AppendServerrT  n  s      /LBD5 5r%   rh  asciiMYAUTHc                     R # s   fakerW   xs   &r"   <lambda>@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>|      'r%   r   
   ZmFrZQ==
rK  utf-8   Subject: üñí©öðéNUTF8 (%s)
)	ru   r  r   	_encodingauthenticater^  r@  appendr   )	r   rh  r  ry   r   r'  
msg_stringrN  rO  s	   &        r"   test_enable_UTF8_True_append.NewIMAPTestsMixin.test_enable_UTF8_True_appendm  s   	50 	5 %56))73%%h0ABt$/:--.t$))73.
MM$dJ4E4Eg4NO	d#z)11':	<r%   c                    ! R  R\         4      pV P                  V4      w  r#VP                  RR 4      w  rCV P                  VR4       VP	                  R4      w  rCV P                  VR4       V P                  VP                  4       V P                  \        P                  P                  R4      ;_uu_ 4        VP                  RR4       R	R	R	4       R	#   + '       g   i     R	# ; i)
c                   0   a  ] tR tRt o RtR tR tRtV tR# )PNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Serveri  r9  c                ,    V P                  VR R4       R# rV  r   r   s   &&&r"   rW  [NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLE  rY  r%   c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir[  r]  r   s   &&&r"   r   aNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATE  r`  ra  rW   N	rX   rY   rZ   r[   r   rW  r   r]   r^   r_   s   @r"   
UTF8Serverr~    s     4LBD Dr%   r  rj  c                     R # rl  rW   rm  s   &r"   ro  NNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>  s    r%   r   rK  zcharset.*UTF8r<  barN)ru   r  rw  r   r@  
assertTruer>  r?  r   rN   rJ   search)r   r  r  r'  rN  s   &    r"   *test_search_disallows_charset_in_utf8_mode<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode  s    	D* 	D KK
+	$$X/@Ad#}-d#++,##GMM$7$7IIMM%' JIIIs   <CC*	c                    ! R  R\         4      pV P                  V4      w  r#V P                  \        P                  P
                  R4      ;_uu_ 4        VP                  RR 4       RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServeri  c                X    V P                  VR RP                  V^ ,          4      4       R# r   z#unrecognized authentication type {}Nr   formatr   s   &&&r"   r   GNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATE  s'    !!#t9@@aIKr%   rW   NrX   rY   rZ   r[   r   r]   r^   r_   s   @r"   MyServerr    s     K Kr%   r  z'unrecognized authentication type METHODMETHODc                      ^# r   rW   rW   r%   r"   ro  6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>  s    !r%   Nru   r  r?  r   rN   rJ   rw  r   r  r  r'  s   &   r"   test_bad_auth_name$NewIMAPTestsMixin.test_bad_auth_name  sj    	K( 	K KK)	##GMM$7$79; ;)4; ; ; ;   A33B	c                    ! R  R\         4      pV P                  V4      w  r#V P                  \        P                  P
                  R4      ;_uu_ 4        VP                  RR 4       RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServeri  c              3  h   "   V P                  R 4       Rx V n        V P                  VRR4       R# 5ir\  Nr   z[AUTHENTICATIONFAILED] invalidr   r^  r   r   s   &&&r"   r   PNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATE  -     ##C( %!!#t-MN   02r^  Nr  r_   s   @r"   r  r    s     O Or%   r  z \[AUTHENTICATIONFAILED\] invalidrj  c                     R # rl  rW   rm  s   &r"   ro  ?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>  s    Gr%   Nr  r  s   &   r"   test_invalid_authentication-NewIMAPTestsMixin.test_invalid_authentication  sk    	O( 	O
 KK)	##GMM$7$735 5*;<5 5 5 5r  c                     ! R  R\         4      pV P                  V4      w  r#VP                  RR 4      w  rEV P                  VR4       V P                  VP                  R4       R# )c                   &   a  ] tR tRt o R tRtV tR# )CNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServeri  c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir[  r]  r   s   &&&r"   r   TNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATE  r`  ra  rW   Nr  r_   s   @r"   r  r         D Dr%   r  rj  c                     R # rl  rW   rm  s   &r"   ro  CNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>  rq  r%   r   rr  Nru   r  rw  r   r^  r   r  r  ry   r   r'  s   &     r"   test_valid_authentication_bytes1NewIMAPTestsMixin.test_valid_authentication_bytes  s\    	D( 	D
 X.%%h0ABt$/:r%   c                     ! R  R\         4      pV P                  V4      w  r#VP                  RR 4      w  rEV P                  VR4       V P                  VP                  R4       R# )c                   &   a  ] tR tRt o R tRtV tR# )HNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServeri  c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir[  r]  r   s   &&&r"   r   YNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATE  r`  ra  rW   Nr  r_   s   @r"   r  r    r  r%   r  rj  c                     R # fakerW   rm  s   &r"   ro  HNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>  s    &r%   r   rr  Nr  r  s   &     r"   $test_valid_authentication_plain_text6NewIMAPTestsMixin.test_valid_authentication_plain_text  s\    	D( 	D
 X.%%h0@At$/:r%   md5opensslc                    V P                  \        4      w  rV P                  R VP                  4       VP	                  RR4      w  r2V P                  VR4       R# )AUTH=CRAM-MD5tim   tanstaaftanstaafr   Nr  r   rO   r   login_cram_md5r   r   r  r'  rets   &   r"   test_login_cram_md5_bytes+NewIMAPTestsMixin.test_login_cram_md5_bytes  sL    KK 45	ov':':;&&u.ABd#r%   c                    V P                  \        4      w  rV P                  R VP                  4       VP	                  RR4      w  r2V P                  VR4       R# )r  r  tanstaaftanstaafr   Nr  r  s   &   r"   test_login_cram_md5_plain_text0NewIMAPTestsMixin.test_login_cram_md5_plain_text  sL    KK 45	ov':':;&&u.@Ad#r%   c           	        R  pV P                  \        4      w  r#V P                  RVP                  4       \        P
                  ! R4      p\        P                  ! RVR7      ;_uu_ 4        V P                  \        P                  P                  V4      ;_uu_ 4        VP                  RR4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                      \         hrB   )
ValueError)akws   *,r"   side_effectBNewIMAPTestsMixin.test_login_cram_md5_blocked.<locals>.side_effect  s    r%   r  z(CRAM-MD5 authentication is not supportedz	hmac.HMAC)r  r  r  N)r  r   rO   r   reescaper   patchr?  r   rN   rJ   r  )r   r  r  r'  msgs   &    r"   test_login_cram_md5_blocked-NewIMAPTestsMixin.test_login_cram_md5_blocked  s    	 KK 45	ov':':;iiBCJJ{<<""7==#6#6<<!!%)<= = =<<< =<<s$   -3C C	3CCCC)	c                    ! R  R\         4      pV P                  V4      w  r#V P                  \        P                  P
                  R4      ;_uu_ 4        VP                  RR 4       RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServeri  c              3     "   V P                  R 4       Rx V n        V P                  R8X  d   V P                  VRR4       R# V P                  VRR4       R# 5ir\  Ns   *
r   z[AUTHENTICATIONFAILED] abortedr   zMYAUTH successfulr  r   s   &&&r"   r   PNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATE  sR     ##C( %==H,%%8:
 %%c41DE   AAr  Nr  r_   s   @r"   r  r    s     	F 	Fr%   r  z \[AUTHENTICATIONFAILED\] abortedrj  c                     R # rB   rW   rm  s   &r"   ro  ?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>  s    Dr%   Nr  r  s   &   r"   test_aborted_authentication-NewIMAPTestsMixin.test_aborted_authentication  sj    
	F( 
	F KK)	##GMM$7$735 5.95 5 5 5r  zimaplib._MAXLINEc                     ! R  R\         4      pV P                  VRR7      w  r#V P                  \        P                  P
                  R4      ;_uu_ 4        V P                  ! VP                  !   RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# ):NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandleri  c                <    V P                   P                  R4       R# )   * OK Ns   * OK xxxxxxxxxxx
r  r(   s   &r"   r   ANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handle  s    

  !?@r%   rW   Nr!  r_   s   @r"   TooLongHandlerr    s     A Ar%   r  Fr#  zgot more than 10 bytesN)ru   r  r?  r   rN   rJ   r  r  )r   r  r'  ry   s   &   r"   test_linetoolong"NewIMAPTestsMixin.test_linetoolong  sp    	A. 	A KKK>	##GMM$7$7(* *OOV223* * * *s   A<<B	c                    V P                  \        R R7      w  rV P                  ! VP                  !  ;_uu_ 4         RRR4       R#   + '       g   i     R# ; i)Fr#  N)r  ru   r  r  )r   r'  ry   s   &  r"   test_simple_with_statement,NewIMAPTestsMixin.test_simple_with_statement  s>    KK 15KA	__f3344 5444s   AA	c                   V P                  \        R R7      w  rV P                  ! VP                  RR/ ;_uu_ 4       pV P	                  VP
                  P                  R4       RRR4       V P                  ! VP                  R\        P                  / ;_uu_ 4       pV P	                  VP
                  P                  \        P                  4       RRR4       V P                  \        4      ;_uu_ 4        V P                  ! VP                  R^ /  RRR4       R#   + '       g   i     L; i  + '       g   i     Lg; i  + '       g   i     R# ; i)Fr#  r   N)r  ru   r  r  r   sockr   r   r   rL   r  )r   r'  ry   r  s   &   r"   test_imaplib_timeout_test+NewIMAPTestsMixin.test_imaplib_timeout_test  s    KK 15KA	__f33BTBBfV[[00$7 C__f33VW=U=UVVZ`V[[00'2J2JK Wz**OOV22>A> +*	 CBVV***s#   'D 5D39E D0	3E	E	c                    ! R  R\         4      pV P                  V4      w  r#VP                  ^,          pV P                  \        4      ;_uu_ 4        V P                  RVRR7      pRRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )QNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandleri  c                \    \         P                  ! ^4       \        P                  V 4       R# )r   N)r   r   ru   r   r(   s   &r"   r   XNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandler.handle  s    

1!((.r%   rW   Nr!  r_   s   @r"   TimeoutHandlerr    s     / /r%   r  	localhostgMbP?)r   N)ru   r  r  rL   TimeoutErrorr  )r   r  r'  ry   addrr  s   &     r"   'test_imaplib_timeout_functionality_test9NewIMAPTestsMixin.test_imaplib_timeout_functionality_test
  se    	/. 	/
 KK/	$$Q'|,,__[$_FF -,,,s   A22B	c                F   V P                  \        R R7      w  rV P                  ! VP                  !  ;_uu_ 4       pVP	                  RR4       V P                  VP                  R4       RRR4       V P                  VP                  4       R#   + '       g   i     L-; iFr#  rI  rJ  N)r  ru   r  r  rL  r   r{   assertIsNoner   r'  ry   imaps   &   r"   test_with_statement%NewIMAPTestsMixin.test_with_statement  sr    KK 15KA	__f3344JJvv&V]]F3 5 	&--( 54s   /BB 	c                   V P                  \        R R7      w  rV P                  ! VP                  !  ;_uu_ 4       pVP	                  RR4       V P                  VP                  R4       VP                  4        V P                  VP                  4       RRR4       V P                  VP                  4       R#   + '       g   i     L-; ir	  )	r  ru   r  r  rL  r   r{   logoutr
  r  s   &   r"   test_with_statement_logout,NewIMAPTestsMixin.test_with_statement_logout  s    KK 15KA	__f3344JJvv&V]]F3KKMfmm,	 5
 	&--( 54s   AB;;C	c           	     <   V P                  \        4      w  rV P                  \        P                  P
                  R 4      ;_uu_ 4        VP                  4       ;_uu_ 4         RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zdoes not support IMAP4 IDLEN)r  ru   r?  r   rN   rJ   idlerE  s   &  r"   test_idle_capability&NewIMAPTestsMixin.test_idle_capability(  sh    KK 12	##GMM$7$7-/ / / // / /s$   
B
#A7	%B
7BB

B	c           	     ^   V P                  \        4      w  rVP                  R R4       V P                  \        P
                  P                  4      ;_uu_ 4        VP                  4       ;_uu_ 4       p RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; irI  rJ  N)r  r   rL  rL   r   rN   rJ   r  )r   r  r'  idlers   &   r"   test_idle_denied"NewIMAPTestsMixin.test_idle_denied/  sk    KK 23	VV$w}}2233%  43 433s$   B4B	6BBBB,	c                   V P                  \        4      w  rVP                  R R4       VP                  4       ;_uu_ 4       p\	        V4      pV P                  VRR.34       \	        V4      pV P                  VRR.34       RR.p\	        V4      w  rgV P                  VR4       V P                  Wu4       \	        V4      pV P                  VRR.34       RRR4       VP                  R4      w  r'V P                  VR.4       VP                  R	4      w  r'V P                  V^ ,          R
4       V P                  V^,          R4       R#   + '       g   i     L}; i)rI  rJ  EXISTS   0   2r   FETCH   3NRECENT   1   9)s"   1 (BODY[HEADER.FIELDS (DATE)] {41}r   )r  r   rL  r  r   r   r^  )r   r  r'  r  r^  expected_fetch_datarN  rO  s   &       r"   test_idle_iter NewIMAPTestsMixin.test_idle_iter6  s2   KK/	VV$[[]]eE{HX4&'9:E{HX4&'9:F# UICS'*T7E{HX4&'9:# & //(+v&//(+a$'a$'3 ]s   BEE	c                v   V P                  \        4      w  rVP                  R R4       VP                  4       ;_uu_ 4       p\	        VP                  4       4      pV P                  \        V4      ^4       RRR4       VP                  R4      w  r%V P                  VRR.4       R#   + '       g   i     L9; i)rI  rJ  Nr"  r#  r$  )	r  r   rL  r  listburstr   lenr^  )r   r  r'  r  batchrO  s   &     r"   test_idle_burst!NewIMAPTestsMixin.test_idle_burstT  s    KK/	VV$[[]]e'ESZ+  //(+d|, ]s   5B((B8	c                \   V P                  \        4      w  rVP                  R R4        VP                  R4      ;_uu_ 4       pV P	                  \
        \        V4       RRR4       R#   + '       g   i     R# ; i  TP                   d   pT P                  R4        Rp?R# Rp?ii ; i)rI  rJ  g      ?Nz3multi-packet response was corrupted by idle timeout)	r  r   rL  r  rL   r   r   r&  fail)r   r  r'  r  errs   &    r"   test_idle_delayed_packet*NewIMAPTestsMixin.test_idle_delayed_packet_  s~    KK ;<	VV$	MS!!U!!-u= "!!!|| 	MIIKLL	Ms5   A> A* A> *A;	5A> ;A> >B+B&&B+c                    V P                  \        4      w  rVP                  R R4      w  r4V P                  VR4       V P                  V^ ,          R4       V P                  VP                  R4       R# )rI  rJ  r      LOGIN completedAUTHN)r  ru   rL  r   r  rM  s   &    r"   
test_loginNewIMAPTestsMixin.test_logink  s^    KK 12	LL0	d#a"45v.r%   c                l   V P                  \        4      w  rVP                  R R4      w  r4V P                  VR4       V P                  V^ ,          R4       VP	                  4       w  r4V P                  VRW434       V P                  V^ ,          RW434       V P                  VP
                  R4       R# )rI  rJ  r   r5  BYEs   IMAP4ref1 Server logging outr  N)r  ru   rL  r   r  r  rM  s   &    r"   test_logoutNewIMAPTestsMixin.test_logoutr  s    KK 12	LL0	d#a"45MMO	ec[1a"AC;Ox0r%   c                     ! R  R\         4      pV P                  V4      w  r#VP                  RR4       VP                  4       w  rEV P	                  VR4       V P	                  V^ ,          R4       R# )c                   &   a  ] tR tRt o R tRtV tR# ),NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdi}  c                J    V P                  R 4       V P                  VRR4      # )z* LSUB () "." directoryAr   zLSUB completedr   r   s   &&&r"   cmd_LSUB5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUB~  s'    ##$>?((d4DEEr%   rW   N)rX   rY   rZ   r[   rA  r]   r^   r_   s   @r"   LsubCmdr?  }  s     F Fr%   rC  rI  rJ  r   s   () "." directoryAN)ru   r  rL  lsubr   )r   rC  r  r'  rN  rO  s   &     r"   	test_lsubNewIMAPTestsMixin.test_lsub|  sc    	F' 	F KK(	VV$KKM	d#a"67r%   c                   V P                  \        4      w  rVP                  R R4       VP                  4       w  r4V P	                  VR4       V P	                  V^ ,          R4       VP                  4       w  r4V P	                  VR4       V P	                  V^ ,          R4       V P	                  VP                  R4       R# )rI  rJ  r   r  s*   Returned to authenticated state. (Success)r6  N)r  ru   rL  selectr   unselectr  rM  s   &    r"   test_unselectNewIMAPTestsMixin.test_unselect  s    KK 12	VV$MMO	d#a$'OO%	d#a"OPv.r%   c                    V P                  \        4      w  rV P                  \        4      ;_uu_ 4        VP                   R R R 4       R #   + '       g   i     R # ; irB   )r  ru   assertWarnsRuntimeWarningfilerE  s   &  r"   )test_file_property_should_not_be_accessed;NewIMAPTestsMixin.test_file_property_should_not_be_accessed  s:    KK 12	n--KK .---s   AA	)r  ry   r  )T),rX   rY   rZ   r[   r  r  r  r(  r4  rA  rF  rP  rz  r  r  r  r  r  r
   requires_hashdigestr  r  r  r  r   r  r  r  r  r  r  r  r  r  r&  r-  r2  r7  r;  rE  rJ  rP  r]   r^   r_   s   @r"   r   r     s
    F(B 22.!)<6($5	=	;	; ''t<$ =$ ''t<$ =$>:" 
ZZ"B'4 (4
?	G))(<	-
M/1	8
/ r%   r   c                   F    ] tR tRt]P
                  t]P                  t	Rt
R# )NewIMAPTestsi  rW   N)rX   rY   rZ   r[   r   rN   r  r$  	TCPServerr  r]   rW   r%   r"   rT  rT    s    J))Lr%   rT  zSSL not availablec                   4   a  ] tR tRt o ]t]tR tR t	Rt
V tR# )NewIMAPSSLTestsi  c                b   \         P                  ! \         P                  4      pV P                  VP                  \         P
                  4       V P                  VP                  R 4       VP                  \        4       \        P                  ! R\        P                  4      pV P                  \         P                  V4      ;_uu_ 4        V P                  \        RR7      w  r4V P                   ! VP"                  RV/ pVP%                  4        RRR4       R#   + '       g   i     R# ; i)T(
            IP address mismatch, certificate is not valid for '127.0.0.1'   # OpenSSL
            |
            CERTIFICATE_VERIFY_FAILED                                       # AWS-LC
        )Fr#  ssl_contextN)rf   rg   PROTOCOL_TLS_CLIENTr   verify_modeCERT_REQUIREDcheck_hostnameload_verify_locationsCAFILEr  compileXr?  CertificateErrorr  ru   r  r  r  )r   rZ  regexr'  ry   r  s   &     r"   test_ssl_raisesNewIMAPSSLTests.test_ssl_raises  s    nnS%<%<=00#2C2CD33T:))&1 

  dd	
 ##C$8$8%@@$5uEIA__f&;&; >1<>FOO	 A@@@s   ADD.	c                   \         P                  ! \         P                  4      pVP                  \        4       V P                  \        R R7      w  r#V P                  RVP                  ^,          VR7      pVP                  4        R# )Fr#  r  rZ  N)
rf   rg   r[  r_  r`  r  ru   r  r  r  )r   rZ  r'  ry   r  s   &    r"   test_ssl_verified!NewIMAPSSLTests.test_ssl_verified  sh    nnS%<%<=))&1KK 15KA	f.C.CA.F-8 ! :r%   rW   N)rX   rY   rZ   r[   	IMAP4_SSLr  rb   r  re  ri  r]   r^   r_   s   @r"   rW  rW    s     J"L$ r%   rW  c                     a  ] tR tRt o ]P
                  t]P                  t	R t
R t]R 4       t]R 4       t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   R	 4       t ! R
 R]4      t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   R 4       t]P                   ]P@                  ! RRR7      R 4       4       t!]P                   R 4       t"R t#R t$]P                   R 4       t%]P                   R 4       t&]P                   R 4       t']P                   ](])PT                  ! RR4      R  4       4       4       t+R!t,V t-R"# )#ThreadedNetworkedTestsi  c                >    ! R  RV P                   4      p\        '       d   \        R4       V! W4      pV P                  VP                  VP
                  P                  4       4       \        '       dD   \        R4       \        RV4       \        RV P                   4       \        RVP                  4       \        P                  ! RV P                   ,          VP                  RR	/R
7      pRVn        VP                  4        \        '       d   \        R4       WE3# )c                   &   a  ] tR tRt o R tRtV tR# )4ThreadedNetworkedTests.make_server.<locals>.MyServeri  c                F    V P                  V4       V P                  4        h rB   r   r   s   &&&r"   r   AThreadedNetworkedTests.make_server.<locals>.MyServer.handle_error  s    ""7+!!#r%   rW   Nr   r_   s   @r"   r  rp    s      r%   r  zcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingr   r   r   Tzserver running)r  r   r   r   r  rF   getsocknameRequestHandlerClassr  r  r
  r  r  )r   r  hdlrr  ry   r=   s   &&&   r"   make_server"ThreadedNetworkedTests.make_server  s    	t(( 	 7#$$%..0I0I0KL7"#(D!)T../(F667 1 11'' $T*, 		7"#yr%   c                    \         '       d   \        R 4       VP                  4        VP                  4        VP	                  4        \         '       d   \        R4       R# R# )zwaiting for serverdoneN)r   r   r  r   r   )r   ry   r  s   &&&r"   reap_server"ThreadedNetworkedTests.reap_server  s@    7&'7&M r%   c              #     "   V P                  \        P                  ^ 3V4      w  r# Vx  V P                  W#4       R#   T P                  Y#4       i ; i5i)r   N)rv  r   r  rz  )r   ru  ry   r  s   &&  r"   reaped_server$ThreadedNetworkedTests.reaped_server  sJ     ))=+=+=q*A4H	-LV,DV,s   %A? AAAc              #    "   V P                  V4      ;_uu_ 4       pV P                  ! VP                  !  p W#3x  VP                  4         R R R 4       R #   TP                  4        i ; i  + '       g   i     R # ; i5irB   )r}  r  r  r  )r   ru  ry   r  s   &&  r"   reaped_pair"ThreadedNetworkedTests.reaped_pair  sb     %%__f&;&;<F n$ &%
  &%%s2   BA-AA-
BA**A--A>	8	Bc                    V P                  \        4      ;_uu_ 4       pV P                  ! VP                  !  pVP	                  4        R R R 4       R #   + '       g   i     R # ; irB   )r}  ru   r  r  r  r   ry   r  s   &  r"   test_connect#ThreadedNetworkedTests.test_connect  sC     122f__f&;&;<FOO 3222s   +AA$	c                    ! R  R\         4      pV P                  V4      ;_uu_ 4       w  r#VP                  RR 4      w  rEV P                  VR4       V P                  VP                  R4       VP                  R4       VP                  RRR	4      w  pw  pV P                  R
V4       VP                  R4       VP	                  R4      w  pw  pV P                  R
V4       RRR4       R#   + '       g   i     R# ; i)c                   D   a a ] tR tRt oV 3R ltR tR tR tRtVt	V ;t
# )EThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandleri  c                6   < . ROV n         \        SV `	  4        R# )AnsweredN)r  FlaggedDeletedSeenDraft)flagsrw   r   r|   s   &r"   r   LThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handle  s    P
 r%   c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir[  r]  r   s   &&&r"   r   VThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATE  r`  ra  c                F   R P                  V P                  4      pV P                  RV,          P                  R4      4       V P                  R4       V P                  R4       RV,          pV P                  VP                  R4      4       V P	                  VRR4       R# )	 \z* FLAGS (%s)ri  r   s
   * 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.r   r   N)r   r  r   r   r   )r   r   r   flag_msgr  s   &&&  r"   r   PThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECT  s}     ::djj1(!: B B7 KL..G"#

7 34!!#t-MNr%   c                r   V^,          P                  R4      P                  R4      P                  4       pV P                  P                  V4       RRP	                  V P                  4      ,          pRV^ ,          : RV: 2pV P                  VP                  R4      4       V P                  VRR	4       R
# )r   ()z(FLAGS (%s))r  z* z FETCH ri  r   zSTORE completed.N)r   r   r  extendr   r   r   r   )r   r   r   	new_flags	flags_msgr  s   &&&   r"   	cmd_STOREOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE#  s     GMM#.44S9??A	

!!),*UZZ

-CC	)-a)<

7 34!!#t-?@r%   )r  )rX   rY   rZ   r[   r   r   r   r  r]   r^   r   r   s   @@r"   BracketFlagHandlerr    s"     !D
OA Ar%   r  rj  c                     R # rl  rW   rm  s   &r"   ro  ;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>,      r%   r   rr  testr#  z+FLAGSz[test]s   [test]PERMANENTFLAGSN)ru   r  rw  r   r^  rH  storerO   )r   r  ry   r  r   rO  rN  s   &      r"   test_bracket_flags)ThreadedNetworkedTests.test_bracket_flags  s    	A!2 	A: 0115Ef,,X7HIJDT4(V__o>MM&! ,,tXx@KC$MM)T*MM&! //*:;KC$MM)T* 2111s   B:C--C>	c                &    ! R  R\         P                  4      pV P                  V4      ;_uu_ 4       pV P                  ! \        P
                  P                  V P                  .VP                  O5!   RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandleri9  c                <    V P                   P                  R 4       R# r  r  r(   s   &r"   r   @ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handle:  s    

  )r%   rW   Nr!  r_   s   @r"   r"  r  9  s     * *r%   r"  N)	r$  r%  r}  rL   r   rN   r&  r  r  )r   r"  ry   s   &  r"   test_issue5949%ThreadedNetworkedTests.test_issue59496  si    	*:: 	*
 
++vgmm11"ooG060E0EG ,+++s   AA??B	c                    ! R  R\         4      pV P                  V4      ;_uu_ 4       pV P                  ! \        P                  P
                  V P                  .VP                  O5!   RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )GThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandleriE  c                N    V P                  R 4       V P                  VRR4       R# r.  r/  r   s   &&&r"   r   VThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYG  r1  r%   rW   Nr2  r_   s   @r"   r3  r  E  s     E Er%   r3  N)ru   r}  rL   r   rN   r&  r  r  )r   r3  ry   s   &  r"   r4  ,ThreadedNetworkedTests.test_line_terminationB  sg    	E 1 	E  122fgmm11"ooG060E0EG 3222   AA55B	c                   0   a  ] tR tRt o RtR tR tRtV tR# )!ThreadedNetworkedTests.UTF8ServeriO  r9  c                ,    V P                  VR R4       R# rV  r   r   s   &&&r"   rW  ,ThreadedNetworkedTests.UTF8Server.cmd_ENABLER  s    c4)<=r%   c              #  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir[  r]  r   s   &&&r"   r   2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATEU  s2     $#(DKK c4)>?ra  rW   Nr  r_   s   @r"   r  r  O  s     0	>	@ 	@r%   r  c                `   V P                  V P                  4      ;_uu_ 4       w  rV P                  VP                  4       V P	                  \
        P                  P                  VP                  R 4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)r<  N)	r  r  r=  r>  rL   r   rN   rJ   r@  r  s   &  r"   rA  ;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHZ  ss    doo..2B6V001gmm116==%HV001 /...s   A.BB-	c                
    ! R  RV P                   4      pV P                  V4      ;_uu_ 4       w  r#V P                  \        P                  P
                  VP                  R4       RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtRtR# )XThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerie  r6  rW   Nr:  rW   r%   r"   NoEnableServerr  e  s    !Lr%   r  r<  N)r  r  rL   r   rN   rJ   r@  )r   r  ry   r  s   &   r"   rF  @ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc  sW    	"T__ 	"n--1A&gmm116==%H .---s   8A11B	c           	         ! R  R\         4      pV P                  \        P                  P                  4      ;_uu_ 4        V P                  V4      ;_uu_ 4       w  r#VP                  RR4      w  rEV P                  VR4       VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                       ] tR tRtRtR# )\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8Serveril  rW   Nrs   rW   r%   r"   NonUTF8Serverr  l  s    r%   r  rI  rJ  r   rK  N)	ru   rL   r   rN   rJ   r  rL  r   r@  )r   r  ry   r  rN  rO  s   &     r"   rP  EThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supportedj  s    	- 	w}}2233!!-004DV"LL8	  d+m, 1 4300 433s$   B::B'	B:'B72B::C	c           
         ! R  RV P                   4      pV P                  V4      ;_uu_ 4       w  r#V P                  VP                  R4       VP	                  RR 4      w  rEV P                  VR4       V P                  VP
                  R4       VP                  R4      w  rEV P                  VR4       V P                  VP                  R4       R	pVP                  R
R
R
VP                  R4      4      w  rxV P                  VR4       V P                  VP
                  RV,          P                  R4      4       R
R
R
4       R
#   + '       g   i     R
# ; i)c                   &   a  ] tR tRt o R tRtV tR# )MThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServeriw  c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5irc  r]  r   s   &&&r"   re  XThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDx  rg  ra  rW   N)rX   rY   rZ   r[   re  r]   r^   r_   s   @r"   rh  r  w  s     5 5r%   rh  ri  rj  c                     R # rl  rW   rm  s   &r"   ro  EThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>  s    gr%   r   rr  rK  rs  rt  Nru  )	r  r  r   rv  rw  r^  r@  rx  r   )	r   rh  ry   r  r   r'  ry  rN  rO  s	   &        r"   rz  3ThreadedNetworkedTests.test_enable_UTF8_True_appendt  s#   	5t 	5 .//3CFV--w7))(4EFGDT4(V__,.mmM2GDT4(V--w72JdD*"3"3G"<>ICS$' :-55g> 0///s   DEE	c                   V P                  V P                  4      ;_uu_ 4       w  rVP                  R R 4      w  r4V P                  VR4       VP	                  R4      w  r4V P                  VR4       V P                  VP                  4       V P                  \        P                  P                  VP                  RR4       RRR4       R#   + '       g   i     R# ; i)rj  c                     R # rl  rW   rm  s   &r"   ro  SThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>  s    Wr%   r   rK  r<  r  N)r  r  rw  r   r@  r  r>  rL   r   rN   rJ   r  )r   ry   r  rN  r'  s   &    r"   r  AThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode  s    doo..2B6((3DEFCS$']]=1FCS$'OOF//0gmm116==%O /...s   B CC	c           	     T    ! R  R\         4      pV P                  V4      ;_uu_ 4       w  r#V P                  \        P                  P
                  4      ;_uu_ 4        VP                  RR 4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# );ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServeri  c                X    V P                  VR RP                  V^ ,          4      4       R# r  r  r   s   &&&r"   r   LThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATE  s&    !!#t .,,2F47O=r%   rW   Nr  r_   s   @r"   r  r    s     = =r%   r  r  c                      ^# r  rW   rW   r%   r"   ro  ;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>  s    ar%   Nru   r  rL   r   rN   rJ   rw  )r   r  ry   r  s   &   r"   r  )ThreadedNetworkedTests.test_bad_auth_name  sr    	=( 	= h''+;F""7==#6#677##Hi8 8 ('77 (''s#   4BB	1BBBB'	c           	     X    ! R  R\         4      pV P                  V4      ;_uu_ 4       w  r#V P                  \        P                  P
                  4      ;_uu_ 4        VP                  RR 4      w  rERRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )DThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServeri  c              3  h   "   V P                  R 4       Rx V n        V P                  VRR4       R# 5ir  r  r   s   &&&r"   r   UThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATE  r  r  r  Nr  r_   s   @r"   r  r    s     O Or%   r  rj  c                     R # rl  rW   rm  s   &r"   ro  DThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>  s    Wr%   Nr  r   r  ry   r  r   rO  s   &     r"   r  2ThreadedNetworkedTests.test_invalid_authentication  sy    	O( 	O h''+;F""7==#6#677#00;LM
 8 ('77 (''#   4BB	3BBBB)	c                    ! R  R\         4      pV P                  V4      ;_uu_ 4       w  r#VP                  RR 4      w  rEV P                  VR4       V P                  VP                  R4       RRR4       V P                  V4      ;_uu_ 4       w  r#VP                  RR 4      w  rEV P                  VR4       V P                  VP                  R4       RRR4       R#   + '       g   i     Ly; i  + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )BThreadedNetworkedTests.test_valid_authentication.<locals>.MyServeri  c              3  |   "   V P                  R 4       Rx V P                  n        V P                  VRR4       R# 5ir[  r]  r   s   &&&r"   r   SThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATE  r`  ra  rW   Nr  r_   s   @r"   r  r    s     D Dr%   r  rj  c                     R # rl  rW   rm  s   &r"   ro  BThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>  r  r%   r   rr  Nc                     R # r  rW   rm  s   &r"   ro  r    s    r%   )ru   r  rw  r   r^  r  s   &     r"   test_valid_authentication0ThreadedNetworkedTests.test_valid_authentication  s    	D( 	D h''+;F,,X7HIJDT4(V__,. ( h''+;F,,X7GHJDT4(V__,. (' (' (''s   AC AC3 C0	3D	r  Tr  c                    ! R  R\         4      pV P                  V4      ;_uu_ 4       w  r#V P                  RVP                  9   4       VP	                  RR4      w  rEV P                  VR4       RRR4       V P                  V4      ;_uu_ 4       w  r#V P                  RVP                  9   4       VP	                  RR4      w  rEV P                  VR4       RRR4       R#   + '       g   i     Lz; i  + '       g   i     R# ; i)c                   *   a  ] tR tRt o RtR tRtV tR# )?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandleri  r   c              3     "   V P                  R 4       Rx pVR8X  d   V P                  VRR4       R# V P                  VRR4       R# 5ir   r   r   s   &&& r"   r   PThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATE  sO     ## %9 : 7 7%%c41FG%%c4=r   rW   Nr   r_   s   @r"   AuthHandlerr    s     8L> >r%   r  r  r  r  r   Nr  )ru   r  r  r   r  r   )r   r  ry   r  r  rO  s   &     r"   test_login_cram_md5*ThreadedNetworkedTests.test_login_cram_md5  s    	>+ 	> k**.>vOOOv/B/BBC--e5GHICS$' +
 k**.>vOOOv/B/BBC--e5HIICS$' +* +*
 +**s   AC"AC5"C2	5D	c           	     X    ! R  R\         4      pV P                  V4      ;_uu_ 4       w  r#V P                  \        P                  P
                  4      ;_uu_ 4        VP                  RR 4      w  rERRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )DThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServeri  c              3     "   V P                  R 4       Rx V n        V P                  R8X  d   V P                  VRR4       R# V P                  VRR4       R# 5ir  r  r   s   &&&r"   r   UThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATE  sL     ##C( %==H,%%c41QR%%c41DEr  r  Nr  r_   s   @r"   r  r    s     F Fr%   r  rj  c                     R # rB   rW   rm  s   &r"   ro  DThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>  s    Tr%   Nr  r  s   &     r"   r  2ThreadedNetworkedTests.test_aborted_authentication  sx    		F( 		F h''+;F""7==#6#677#00>J
 8 ('77 (''r  c                    ! R  R\         4      pV P                  V4      ;_uu_ 4       pV P                  ! \        P                  P
                  V P                  .VP                  O5!   RRR4       R#   + '       g   i     R# ; i)c                   &   a  ] tR tRt o R tRtV tR# )?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandleri  c                    V P                   P                  R \        P                  R,          ,           R,           4       R# )r     xr   N)r   r   r   _MAXLINEr(   s   &r"   r   FThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handle  s)    

  G,<,<t,C!Cg!MNr%   rW   Nr!  r_   s   @r"   r  r    s     O Or%   r  N)ru   r}  rL   r   rN   rJ   r  r  )r   r  ry   s   &  r"   r  'ThreadedNetworkedTests.test_linetoolong  sf    	O. 	O
 //6gmm11"ooG060E0EG 0///r  c                  a ^ o ! V3R lR\         4      p\        ^^@4       F  p^V,          oV P                  RS 24      ;_uu_ 4        V P                  V4      ;_uu_ 4       pV P	                  \
        P                  P                  4      ;_uu_ 4        V P                  ! VP                  !   RRR4       RRR4       RRR4       K  	  R#   + '       g   i     L&; i  + '       g   i     L1; i  + '       g   i     K  ; i)r   c                   .   <a  ] tR tRt o V3R ltRtV tR# )GThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandleri	  c                Z   < V P                  R S,          4       V P                  R4       R# )z	* OK {%d}r   N)r   )r   sizes   &r"   r   NThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandler.handle
  s$    ##K$$67##K0r%   rW   Nr!  )r`   r  s   @r"   
BadHandlerr  	  s     1 1r%   r  zsize=2eN)
ru   rangesubTestr}  rL   r   rN   r&  r  r  )r   r  exponentry   r  s   &   @r"   test_truncated_large_literal3ThreadedNetworkedTests.test_truncated_large_literal  s    	1* 	1
 b"H=Dv.//''
33v**7==+>+>??)>)>? @ 4 0/ & @? 43 0//s<   
C5$2C"C1C"9C5CC""C2-C55Dc           	         V P                  \        4      ;_uu_ 4       pV P                  ! VP                  !  ;_uu_ 4         R R R 4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; irB   )r}  ru   r  r  )r   ry   s   & r"   r  1ThreadedNetworkedTests.test_simple_with_statement  sP      122f&"7"788 9 3288 322s#   #A(A	A(A% A((A9	c           	        V P                  \        4      ;_uu_ 4       pV P                  ! VP                  !  ;_uu_ 4       pVP	                  R R4       V P                  VP                  R 4       RRR4       V P                  VP                  4       RRR4       R#   + '       g   i     L5; i  + '       g   i     R# ; ir  )r}  ru   r  r  rL  r   r{   r
  r   ry   r  s   &  r"   r  *ThreadedNetworkedTests.test_with_statement  s     122f&"7"788D

66*  7 9 fmm,	 3288 322s#   #B0/B	0#B0B-(B00C	c           	        V P                  \        4      ;_uu_ 4       pV P                  ! VP                  !  ;_uu_ 4       pVP	                  R R4       V P                  VP                  R 4       VP                  4        V P                  VP                  4       RRR4       V P                  VP                  4       RRR4       R#   + '       g   i     L5; i  + '       g   i     R# ; ir  )	r}  ru   r  r  rL  r   r{   r  r
  r  s   &  r"   r  1ThreadedNetworkedTests.test_with_statement_logout$  s      122f&"7"788D

66*  7!!&--0	 9
 fmm, 3288 322s$   #CAC	#CCCC,	Fz Won't work if __debug__ is Falsec                   R R./pV P                  \        4      ;_uu_ 4       pV P                  ! VP                  !  ;_uu_ 4       p\        P
                  P                  VR4      ;_uu_ 4       pVP                  V4       VP                  R4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)z
READ-WRITEr%   _mesgz)untagged responses dump:READ-WRITE: [b'']N)	r}  ru   r  r  r   r  object_dump_urassert_called_with)r   untagged_resp_dictry   r  	mock_mesgs   &    r"   test_dump_ur#ThreadedNetworkedTests.test_dump_ur/  s    
 +SE2 122f&"7"788DZZ&&tW55MM"4500C 6 9 3255 98 322s;   #C)B?	/#B,B?	C,B<7B?	?C
CC#	rW   N).rX   rY   rZ   r[   r$  rU  r  r   rN   r  rv  rz  r   r}  r  r   reap_threadsr  r  r  r4  ru   r  rA  rF  rP  rz  r  r  r  r  r
   rR  r  r  r  r  r  r  r  r	   unittest
skipUnlessr#  r]   r^   r_   s   @r"   rm  rm    s|    ))LJ@ - -     "" #
 "".+ #.+` ""	G #	G ""
G #
G	@& 	@ ""2 #2 ""I #I ""- #- "" #: ""P #P ""
9 #
9 ""N #N "". #.* ""''t<( = #(6 ""K #K$G@ "" # ""- #- ""- #- ""$FG
 H  #
r%   rm  c                   L   a  ] tR tRt o ]t]t]P                  R 4       t
RtV tR# )ThreadedNetworkedTestsSSLi?  c           	        \         P                  ! \         P                  4      pVP                  \        4       \
        P                  ! R \
        P                  4      pV P                  \         P                  V4      ;_uu_ 4        V P                  \        4      ;_uu_ 4       pV P                  ! VP                  RV/ pVP                  4        RRR4       RRR4       V P                  \        4      ;_uu_ 4       pV P                  RVP                  ^,          VR7      pVP                  4        RRR4       R#   + '       g   i     Lu; i  + '       g   i     L; i  + '       g   i     R# ; i)rY  rZ  Nr  rh  )rf   rg   r[  r_  r`  r  ra  rb  r?  rc  r}  ru   r  r  r  )r   rZ  rd  ry   r  s   &    r"   ri  +ThreadedNetworkedTestsSSL.test_ssl_verifiedD  s   nnS%<%<=))&1 

  dd	
 ##C$8$8%@@##$566&&*?*? B5@B! 7 A  122f__[&2G2G2J1< % >FOO 32 76 A@ 322s0   E%-D?	E?6E%?E
EE"	%E6	rW   N)rX   rY   rZ   r[   rb   r  rk  r  r   r%  ri  r]   r^   r_   s   @r"   r)  r)  ?  s'     "LJ"" #r%   r)  __main__)7r  r   test.supportr   
contextlibr   r   os.pathosr$  r   r   r  r  rF   r   r   r   r	   r
   r   r&  r   r   r   r   rf   ImportErrorrequires_working_socketpathr   dirname__file__curdirrj   r`  TestCaser   rU  rb   rk  r%  ru   r   r   r   r   r   rT  r'  rW  rm  r)  rX   mainrW   r%   r"   <module>r9     s    & %       	  L L ' )   2 2   t ,77<<1>>RYY
N[	bggooh/<<299j.	Y>;(## >;B (,00 ( !!I  I\A99 \A~I* I;& ;2;"3 ;"
6, 
6I IX*$h&7&7 *
 
S-.'):):  />{X.. {| 
S-. 6  /6 zMMO K"  
Cs    H5 5	II