+
    Bip                        ^ RI HtHtHtHtHtHtHtHt ^ RI	H
t
 ^ RIHt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t^ RIt^ RIt]
! R4      t]P8                  tR]P:                  ! 4        R2tRR	 lt]'       d   ]P@                  ! R
4      h ! R R]PB                  4      t" ! R R]PB                  4      t#]$R8X  d   ]PJ                  ! 4        R# R# )    )requires_2G_4G
gc_collectcpython_onlyis_emscriptenis_apple!in_systemd_nspawn_sync_suppressed)import_module)TESTFNunlink)assert_python_okNmmappython_
_test_mmapc                     R P                  \        P                  ! \        P                  V R7      4      p\
         RV 2# ) )k_)joinrandomchoicesstringascii_uppercasetagname_prefix)lengthsuffixs   & %/usr/lib/python3.14/test/test_mmap.pyrandom_tagnamer      s3    WWV^^F$:$:fEFFQvh''    z.incompatible with Emscripten's mmap emulation.c                   n  a  ] tR t^$t o R tR tR tR t]P                  ! ]
P                  R8H  R4      R 4       t]P                  ! ]
P                  R8H  R4      R 4       t]P                  ! ]
P                  R8g  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R tR t R t!]PD                  ! ]#! ]$R4      R4      R  4       t%R! t&R" t'R# t(]PD                  ! ]
P                  R8H  R$4      R% 4       t)]*]PD                  ! ]
P                  R8H  R$4      R& 4       4       t+]PD                  ! ]
P                  R8H  R$4      R' 4       t,]PD                  ! ]
P                  R8H  R$4      R( 4       t-R) t.R* t/R+ t0R, t1R- t2R. t3R/ t4R0 t5]PD                  ! ]#! ]$PH                  R14      R24      R3 4       t6]PD                  ! ]
P                  R8H  R$4      R4 4       t7]PD                  ! ]
P                  R8H  R$4      R5 4       t8]PD                  ! ]
P                  R8H  R$4      R6 4       t9]PD                  ! ]
P                  R8H  R$4      R7 4       t:R8 t;]PD                  ! ]
P                  R8H  R$4      ]PD                  ! ]#! ]$PH                  R94      R:4      R; 4       4       t<R<t=V t>R=# )>	MmapTestsc                    \         P                  P                  \        4      '       d   \         P                  ! \        4       R # R # N)ospathexistsr   r   selfs   &r   setUpMmapTests.setUp&   s&    77>>&!!IIf "r    c                `     \         P                  ! \        4       R #   \         d     R # i ; ir$   )r%   r   r   OSErrorr(   s   &r   tearDownMmapTests.tearDown*   s%    	IIf 		s    --c                D
   \        \        R 4      p VP                  R\        ,          4       VP                  R4       VP                  R\        ^,
          ,          4       VP	                  4        \
        P                  VP                  4       ^\        ,          4      pVP                  4        \        \        V4      4      pV P                  VP                  R4      \        4       V P                  \        V4      ^\        ,          4       V P                  V^ ,          ^ 4       V P                  VR,          R4       V P                  \        VP                  \        V4      4       V P                  \        VP                   \        V4      R4       ^3V^ &   RV\        ^,           \        ^,           ^,           % V P                  V^ ,          ^34       V P                  VR,          R4       V P                  V\        ^,
          \        ^,            R4       VP	                  4        \"        P$                  ! RV4      pVf   V P'                  R
4       MNVP)                  ^ 4      w  rVWe,
          pV P                  V\        4       V P                  V\        ^,           4       V P+                  VP-                  4       4       V P                  VP/                  ^ ^ 4      ^ 4       V P                  VP1                  4       ^ 4       V P                  VP/                  ^*^4      ^*4       V P                  VP1                  4       ^*4       V P                  VP/                  ^ ^4      \        V4      4       V P                  VP1                  4       \        V4      4       V P                  \2        VP.                  R4       V P                  \2        VP.                  ^^4       V P                  \2        VP.                  \        V4      ) ^,
          ^4        VP5                  R4       V P                  \        V4      R4       V P                  \2        VP.                  R^ 4       \        \        R4      p VP/                  ^ ^4       V P                  VP1                  4       R4       VP                  4        V P                  VP7                  4       R4       VP                  4        R	#   TP                  4        i ; i  TP                  4        i ; i  \8         d     LIi ; i)zbw+       foor      Ns         bars   3  s    foobar s	   [A-Za-z]+Nzregex match on mmap failed!     rb)openr   writePAGESIZEflushr   filenoclosestrtypeassertEqualfindlenassertRaises
IndexError__getitem____setitem__researchfailspan
assertTrueseekableseektell
ValueErrorresizesizeSystemError)r)   fmtpmatchstartendr   s   &       r   
test_basicMmapTests.test_basic0   s    	GGE8O$GGFOGGEHQJ')GGI		!((*a(l3AGGI a\2Q8,1q!3+ 	*ammSV<*ammSVUC !(.(A+x{1}% 	1w'3*8A:15}E		 		,*=II34AJE[FUH-S(Q,/ 	

%1q)1%A+2&1s1v.3q6* 	*affb1 	*affa3 	*affs1vgai;	,HHSM SVS)j!&&#q9 VT"Aq!  3/	QVVXs+		a GGIZ 	%  	 		s*   BS' T 32S< 'S9<TTTc                $   ^
p\        \        R4      ;_uu_ 4       pVP                  RV,          4       RRR4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       V\        P
                  R7      pV P                  VR,          RV,          R4        RV,          VR&   V P                  R	4        RV^ &   V P                  R	4        VP                  ^ ^ 4       VP                  R
4       V P                  R	4        VP                  ^ ^ 4       VP                  R4       V P                  R	4        VP                  ^V,          4       V P                  R4       \        \        R4      ;_uu_ 4       pV P                  VP                  4       RV,          R4       RRR4       RRR4       \        \        R4      ;_uu_ 4       p \        P                  VP	                  4       V^,           4      p\        P                  P!                  R4      '       g   V P                  R4       VP#                  4        \        P                  P!                  R4      '       d3   \        \        R4      ;_uu_ 4       pVP'                  V4       RRR4       RRR4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       V\        P(                  R7      pRV,          VR&   V P                  VR,          RV,          R4       VP+                  4        VP#                  4        RRR4       \        \        R4      ;_uu_ 4       pVP                  4       pRRR4       V P                  XRV,          R4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       V\        P,                  R7      pRV,          VR&   V P                  VR,          RV,          R4       VP+                  4        \        \        R4      ;_uu_ 4       pV P                  VP                  4       RV,          R4       RRR4       V P/                  \        VP                  ^V,          4       VP#                  4        RRR4       \        \        R4      ;_uu_ 4       pV P/                  \$        \        P                  VP	                  4       V^R7       RRR4       \0        P2                  R8X  EdE   \        \        R4      ;_uu_ 4       pV P/                  \$        \        P                  VP	                  4       V\        P4                  \        P6                  \        P(                  R7       RRR4       \        P6                  \9        \        R^ 4      ,          p\        \        R4      ;_uu_ 4       p \        P                  VP	                  4       WR7      pV P/                  \        VP                  R4       V P/                  \        VP                  ^ 4       VP#                  4        RRR4       R# R#   + '       g   i     EL6; i  \         d     ELi ; i  \         d     ELi ; i  \         d     ELi ; i  \         d     ELpi ; i  \         d     ELX\         d     ELei ; i  + '       g   i     EL1; i  + '       g   i     EL=; i  \$         d;    \        P                  P!                  R4      '       d   T P                  R4        ELi ; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL5; i  + '       g   i     EL; i  + '       g   i     EL?; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELK; i  \:         d     ELi ; i  + '       g   i     R# ; i)
   wb   aNr8   accessNNNz#Readonly memory map data incorrect.   bz$Able to write to readonly memory map   abc   dz"Able to resize readonly memory mapz*Readonly memory map data file was modifiedr+bwinz1Opening mmap with size+1 should raise ValueError.z0Opening mmap with size+1 should work on Windows.   cz5Write-through memory map memory not updated properly.z8Write-through memory map data file not updated properly.z4Copy-on-write memory map data not written correctly.z4Copy-on-write test data file should not be modified.posix)flagsprotrb   	PROT_EXECrl   s   abcdef)r:   r   r;   r   r>   ACCESS_READrB   rK   	TypeErrorrO   
write_byterR   rT   readsysplatform
startswithr?   rQ   truncateACCESS_WRITEr=   ACCESS_COPYrE   r%   nameMAP_PRIVATE	PROT_READgetattrPermissionError)r)   mapsizefprU   rV   stuffrl   s   &      r   test_access_parameterMmapTests.test_access_parameter   s   &$2HHT'\"  &$1		!((*gd6F6F	GAQqT4<1VWBG|! 		@AB! 		@ABq! 		@ABq!T" 		@A@7# 		>?fd##r  DL!MO $_  h &%  AIIahhj'!)4 ||..u55IIQR	||&&u--&%((AJJw' )# !* &%  A		!((*gd6G6G	HA<AaDQqT4<JLGGIGGI ! &$1FFHE  WI	K &%  A		!((*gd6F6F	GA<AaDQqT4'>SUGGIfd##r  DL!WY $ i1W9=GGI ! &%  Aj$))QXXZQRS ! 77gfe$$!!*diiW(,(8(8'+~~d>O>O " Q % >>GD+q$AADfe$$		!((*g	AA
 %%i)D%%iqAGGI %$ W              $##_  n  R
 <<**511IIPQR )((# !  * !     $## !   !  
 %$$ '  %$$s  Y!A[0+Y57[0	Z[0 #Z[0#Z+8[0
Z=")[0)[	4[0] +\	A*] 4] ]	] B]4(^3B
^0=)^	&A ^07_3A#__>%_,A_>!Y2	5Z [0Z[0Z[0Z[0Z($[0'Z(([0+Z:6[09Z::[0=[[0[[[0[[0[-'	[00\	/]	4]	] ]		] ]	]  ]1	4^	^	^-'	^00_	_	_)	,_;7_>:_;;_>>`	ntztrackfd not present on Windowsc                   ^@p\        \        R4      ;_uu_ 4       pVP                  RV,          4       RRR4       R EF  pV P                  VR7      ;_uu_ 4        \        \        R4      ;_uu_ 4       p\        P	                  VP                  4       VRR7      ;_uu_ 4       pV'       d   VP                  4        V P                  \        V4      V4       V P                  \        4      ;_uu_ 4       pVP                  4        RRR4       V P                  XP                  P                  \        P                  4       V P                  \        4      ;_uu_ 4        VP!                  V^,          4       RRR4       V P                  \        4      ;_uu_ 4        VP!                  V^,          4       RRR4       V P                  VP"                  R4       VP%                  \'        R	4      4       \'        R
4      V^&   VP)                  4        \        \        R4      ;_uu_ 4       pV P                  VP+                  ^4      R4       RRR4       V P                  VP-                  4       ^4       VP/                  ^ 4       V P                  VP-                  4       ^ 4       V P                  VP1                  4       \'        R	4      4       RRR4       RRR4       V P                  XP"                  R4       V P                  \2        P4                  ! \        4      P6                  V4       RRR4       EK  	  R#   + '       g   i     EL; i  + '       g   i     ELT; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELJ; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     EK  ; i)@   r_   r`   NTF)close_original_fdrg   trackfdXYr8   s   XaYa)TF)r:   r   r;   subTestr   r>   r?   rB   rD   rE   r-   rS   	exceptionerrnoEBADFrQ   rR   closedrq   ordr=   rr   rP   rO   	read_byter%   statst_size)r)   rS   rU   r   rV   err_cms   &     r   test_trackfd_parameter MmapTests.test_trackfd_parameter  s|   &$1GGDI  !,0ABB&%((A188:tUCCq,GGI((Q6!..w776FFH 8(()9)9)?)?M!..z::HHTAX. ;!..z::HHTQY/ ;((59 SX."3x!	!&$//1 ,,QVVAY@ 0((15q	((15((CA- D )2   40  !8!8$?7 CB "-   877 ;::::: 0//# DC )( CBBs   L=O5/N4$AN!5MAN!M%8%N!M96A4N!*"NBN!N4AO=M	M"	N!%M60	N!9N
	N!N	N!!N1,N44O?OOc           	     
   ^@p\         P                  RVRR7      ;_uu_ 4       pV P                  \        4      ;_uu_ 4        VP                  4        RRR4       V P                  \        4      ;_uu_ 4        VP                  V^,          4       RRR4       V P                  \        V4      V4       \        R4      V^ &   RRR4       R#   + '       g   i     L; i  + '       g   i     LV; i  + '       g   i     R# ; i)r   Fr   Nar9   )	r   rE   r-   rS   rQ   rR   rB   rD   r   r)   rS   rV   s   &  r   test_trackfd_neg1MmapTests.test_trackfd_neg14  s    YYr4Y//1""7++ ,"":..# /SVT*s8AaD 0/++.. 0//s;   C1C	%C17C	1C1CC1C.)C11D	ztrackfd only fails on Windowsc                P   ^@pV P                  \        4      ;_uu_ 4        \        P                  RVRR7       RRR4       V P                  \        4      ;_uu_ 4        \        P                  RVRR7       RRR4       R#   + '       g   i     LP; i  + '       g   i     R# ; i)r   Tr   NFr9   )rE   rp   r   )r)   rS   s   & r   $test_no_trackfd_parameter_on_windows.MmapTests.test_no_trackfd_parameter_on_windows@  so     y))IIb$I- *y))IIb$I. *) *))))s   BBB	B%	c                R    V P                  \        \        P                  RR4       R# )      N)rE   r-   r   r(   s   &r   test_bad_file_descMmapTests.test_bad_file_descI  s    '499b$7r    c                N   \        \        R 4      ;_uu_ 4       pRp\        V4      pVP                  V4       VP	                  4        \
        P                  VP                  4       V4      pRRR4       \        X^,           4       Fx  p\        WS^,           4       F_  pXWV pV P                  XP                  V4      VP                  V4      4       V P                  VP                  VR,           4      R4       Ka  	  Kz  	  XP                  4        R#   + '       g   i     L; i)wb+s   aabaac deef  aa N   xr9   )r:   r   rD   r;   r=   r   r>   rangerB   rC   r?   )r)   rU   datanrV   rY   finishslices   &       r   test_tougher_findMmapTests.test_tougher_findM  s     &%  A2DD	AGGDMGGI		!((*a(A ! 1Q3ZEs+U,  		%0@A  !5r: ,  
 	
	 ! s   ADD$	c           
        \        \        R 4      ;_uu_ 4       pRp\        V4      pVP                  V4       VP	                  4        \
        P                  VP                  4       V4      pRRR4       V P                  XP                  R4      ^ 4       V P                  VP                  R4      ^4       V P                  VP                  R^ R4      ^ 4       V P                  VP                  R^4      ^4       V P                  VP                  R^R4      ^4       V P                  VP                  R^R4      R4       V P                  VP                  \        R4      4      ^ 4       \        X) ^,
          V^,           4       Fd  p\        V) ^,
          V^,           4       FB  pR F9  pXP                  WuV4      pV P                  VP                  WuV4      WWV34       K;  	  KD  	  Kf  	  R#   + '       g   i     EL; i)r      one two onesN   one   onesr9   r   )   os   ons   twor      s)r:   r   rD   r;   r=   r   r>   rB   rC   	bytearrayr   )	r)   rU   r   r   rV   ijpexpecteds	   &        r   test_find_endMmapTests.test_find_end_  s   &%  A"DD	AGGDMGGI		!((*a(A ! 	+!,2.2*A.2.22.3	& 12A6r!tQqS!AA2a41%=A#yyq1H$$QVVA!_hA	J > & " !  s   AG00H	c           
     Z    \         P                  \         P                  ,          p\         P                  p^ p\         P                  p\        ^ R4       F  p\         P                  RY&^,           ,          YR7      ;_uu_ 4       p\         P                  RY&R,           ,          YR7      ;_uu_ 4       pTP                  RR4       RRR4       RRR4       K  	  R#   \
         d   p\        P                  ! R4      ThRp?ii ; i  + '       g   i     LH; i  + '       g   i     K  ; i)	r   zmmap flags unavailableNi  )rk   rl   i   s   for9   r   )
r   rz   MAP_ANONYMOUSr<   r{   AttributeErrorunittestSkipTestr   rC   )	r)   rk   r<   	PROT_NONEr{   er   guardfms	   &        r   'test_find_does_not_access_beyond_buffer1MmapTests.test_find_does_not_access_beyond_bufferv  s    	E$$t'9'99E}}HII q$A2xq51!&  8 8;@YYr84x#8%*  < <?AGGE2&<8 8    	E##$<=1D	E
< <8 8 8s<   AC .D3DDD'C>>DDDD*c                   \        \        R 4      ;_uu_ 4       pRp\        V4      pVP                  V4       VP	                  4        \
        P                  VP                  4       V4      pRRR4       V P                  XP                  R4      ^4       V P                  VP                  R4      ^ 4       V P                  VP                  R^ R4      ^4       V P                  VP                  R^ R4      ^ 4       V P                  VP                  R^R4      ^4       V P                  VP                  R^R4      R4       V P                  VP                  \        R4      4      ^4       R#   + '       g   i     EL; i)r   r   Nr   s   one r9   r   )
r:   r   rD   r;   r=   r   r>   rB   rfindr   )r)   rU   r   r   rV   s   &    r   
test_rfindMmapTests.test_rfind  s   &%  A"DD	AGGDMGGI		!((*a(A ! 	!,)1-B/3B/3B/3B/46!23Q7 !  s   AE..E?	c                   \        \        R 4      ;_uu_ 4       pVP                  RR,          4       RRR4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       R\        P
                  R7      pVP                  4        VP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   r`   Nr8   ra      )r:   r   r;   r   r>   ro   r?   r)   rU   mfs   &  r   test_double_closeMmapTests.test_double_close  s    &%  AGGEDL! ! &$1188:uT5E5EFBHHJHHJ   !   s   B1AC1C	C	c           	         \        \        R 4      ;_uu_ 4       pVP                  RR,          4       RRR4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       ^ 4      ;_uu_ 4       pV P                  \        V4      RR4       V P                  VP                  R4      RR,          4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L-; i  + '       g   i     R# ; i)r      mNzrb+z Map size should equal file size.r   )r:   r   r;   r   r>   rB   rD   rr   r   s   &  r   test_entire_fileMmapTests.test_entire_file  s    &%  AGGEDL! ! &%  AYYqxxz1%%SWe-OPRWWU^UT\: & !  !  &% !  s0   C-C<?AC)	C<C&	)C94C<<D	c           	        \        \        R 4      ;_uu_ 4       pVP                  RR,          4       RRR4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       ^ R\        P
                  R7      ;_uu_ 4       pV P                  \        VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L-; i  + '       g   i     R# ; i)r_   r   r   Nr8   offsetrb   i8 i   )	r:   r   r;   r   r>   ro   rE   rF   rG   r   s   &  r   test_length_0_offsetMmapTests.test_length_0_offset  s    
 &$1GGY$&'   &$1188:qt?O?OPPTV!!*bnneD Q     QP  s/   C>C*"C	2C*C	C'"C**C;	c           
     t   \        \        R 4      ;_uu_ 4       pVP                  RR,          4       RRR4       \        \        R4      ;_uu_ 4       pV P                  \        \
        P
                  VP                  4       ^ RR7       RRR4       R#   + '       g   i     Li; i  + '       g   i     R# ; i)r_   i r   Nw+bi  r   )r:   r   r;   rE   rQ   r   r>   r)   rU   s   & r   test_length_0_large_offset$MmapTests.test_length_0_large_offset  s~     &$1GGFTM"   &%  Aj$))QXXZ%/  1 !    !  s   B7B&B#	&B7	c           	        \        \        R 4      ;_uu_ 4       pVP                  R4       VP                  4        \        P	                  VP                  4       ^
4      pVP                  ^^ ^4       V P                  VR,          RR4       VP                  4        RRR4       Rp\        \        V4      4       F  p\        \        V4      4       F  p\        \        V4      \        WE4      ,
          4       F  pVRV W5WV,            ,           W4V,           R ,           p\        P	                  R\        V4      4      pW8R&   VP                  WEV4       V P                  VR,          V4       VP                  4        K  	  K  	  K  	  \        P	                  R^d4      p. ROp	\        P                  ! WV	4       F  w  rp VP                  WV4       K  	  . R	Op	V	 F(  w  rpV P                  \        VP                  WV4       K*  	  VP                  4        \        P	                  R^4      pV P                  \        VP                  ^ ^ ^4       V P                  \        VP                  ^^ ^4       V P                  \        VP                  ^ ^^4       VP                  ^ ^ ^4       VP                  ^ ^ ^ 4       R#   + '       g   i     EL-; i  \         d     EK)  i ; i)
r   s
   ABCDEabcderc   s
   ABCDEABCDEz'Map move should have duplicated front 5N
   0123456789r9   )ir9   r      d   ))r9   r9   r9   )r9   r9   r   )r9   r   r9   )r   r9   r9   )r9   r   r   )r   r9   r   )r   r   r9   )r:   r   r;   r=   r   r>   moverB   r?   r   rD   max	itertoolsproductrQ   rE   )r)   rU   r   r   destsrccountr   rV   offsetssourcerS   s   &           r   	test_moveMmapTests.test_move  sA   &%  AGGM"GGI188:r*BGGAq!RUM3\]HHJ ! #d)$DSY'"3t9s4~#=>E#ET{Tci-@@4U
CTTH		"c$i0AaDFF4e,$$QqT84GGI ? ( % IIb#'"+"3"3Gg"NF$vT* #O7")F$j!&&&E #* 	
	IIb!*affaA6*affaA6*affaA6	q!Q	q!QW !  8  s   BK K K	K$#K$c                   \         P                  R\        4      p\        \        4       F  pV P                  W,          ^ R4       K  	  \        \        4       F(  pV^,          pW1V&   V P                  W,          V4       K*  	  R# )r   z+anonymously mmap'ed contents should be zeroNr9   )r   r<   r   rB   )r)   rV   xbs   &   r   test_anonymousMmapTests.test_anonymous  sj    IIb(#xAQT1JL ! xADAaDQT1% !r    c           	     F   \         P                  R^4      pV P                  VP                  4       VP                  \	        \        ^4      4      4       VP                  ^ 4       V P                  VP                  4       \	        \        ^4      4      4       VP                  ^4       V P                  VP                  4       \	        \        ^^4      4      4       VP                  ^4       V P                  VP                  4       R4       VP                  ^4       V P                  VP                  R4      \	        \        ^^4      4      4       VP                  ^4       V P                  VP                  R4      \	        \        ^^4      4      4       VP                  ^4       V P                  VP                  R4      \	        \        ^^4      4      4       VP                  ^	4       V P                  VP                  R4      \	        \        ^	^4      4      4       R# )r   r    Nr9   r   i)	r   
addCleanupr?   r;   bytesr   rO   rB   rr   r)   rV   s   & r   test_read_allMmapTests.test_read_all  sh   IIb"  	
eBi !	q	5r#34	q	5q"#67	r
3'	q	uU1b\':;	q	U5B<%89	q	U5B<%89	q	eE!RL&9:r    c                2   \         P                  R^4      pV P                  VP                  4       V P                  \        VP
                  R4       V P                  \        VP
                  R4       V P                  \        VP
                  . RO4       R# )r   foog      @Nr9   )r   r   r4   )r   r   r?   rE   rp   rr   r   s   & r   test_read_invalid_argMmapTests.test_read_invalid_arg  sd    IIb" )QVVU3)QVVS1)QVVY7r    c                v   \        \        \        R 4      4      4      p\        P                  R\	        V4      4      pWR&   V P                  VR,          V4       ^ R^^^R\        P                  RRRR3pV F>  pV F5  pVR,           F%  pV P                  W$WV1,          WWV1,          4       K'  	  K7  	  K@  	  R# )	   rc   N,  r   NNr9   r   )r   reversedr   r   rD   rB   rs   maxsize)r)   srV   indicesrY   stopsteps   &      r   test_extended_getslice MmapTests.test_extended_getslice  s    (5:&'IIb#a&!!1q!dAq"c3;;BTJE#BKKD$$QT%7%&T%79 (   r    c                   \        \        \        R 4      4      4      p\        P                  R\	        V4      4      p^ R^^^R\
        P                  RRRR3pV F  pV F  pVR,           Fw  pWR&   V P                  VR,          V4       \        V4      pWtWV1,          p\        \        V4      4      pWWEV1&   WWEV1&   V P                  VR,          \        V4      4       Ky  	  K  	  K  	  R# )	r   Nr   r  rc   r9   r   r  r  )	r   r  r   r   rD   rs   r  rB   list)	r)   r  rV   r  rY   r  r	  Lr   s	   &        r   test_extended_set_del_slice%MmapTests.test_extended_set_del_slice(  s    (5:&'IIb#a&!dAq"c3;;BTJE#BKKDaD$$QqT1-QA 4_-D $0D)-eo&)-eo&$$QqT584 (   r    c                    VP                  R V,          4       VP                  R4       VP                  R V^,
          ,          4       VP                  4        \        P                  VP                  4       ^ 4      # )r1   r2   )r;   r=   r   r>   )r)   rU   halfsizes   &&&r   make_mmap_fileMmapTests.make_mmap_file<  sT    	!"		(Q,'(	
yy!((*a((r    c                :   \        \        R 4      pVP                  4        \        \        R4      ;_uu_ 4       pV P                  \        R\
        P
                  VP                  4       ^ \
        P                  R7       RRR4       R#   + '       g   i     R# ; i)r   r8   zcannot mmap an empty filera   N)r:   r   r?   assertRaisesRegexrQ   r   r>   ro   r   s   & r   test_empty_fileMmapTests.test_empty_fileD  sg    &% 		&$1"":#>#'99ahhj!*.*:*: # <  s   AB		B	c                   \        \        R 4      p \        P                  pV P	                  W4      pVP                  4        VP                  4        V^,          p\        \        R4      pR	 FM  p \        P                  VP                  4       WER7      pV P                  ^ ^4       V P                  ^ ^ 4       KO  	  VP                  4        \        \        R4      p\        P                  VP                  4       WB,
          VR7      pV P                  VR,          R4       VP                  4         VP                  R4       V P                  \        V4      R4       V P                  \        VP                  R^ 4       V P                  VR,          R4       \        \        R4      pVP                  ^ ^4       V P                  VP                  4       VR,           4       VP                  4        V P                  VP!                  4       VR,           4       VP                  4        VP                  4         \$        P&                  ! \        4       R#   \        \        \        3 d     EK  i ; i  \"         d     Lhi ; i  \(         d     R# i ; i  TP                  4         \$        P&                  ! \        4       i   \(         d     i i ; i; i)
r   rg   Nr   r3   r2   r6   r7   r8   )r   r9   N)r:   r   r   ALLOCATIONGRANULARITYr  r?   r>   rB   rQ   rp   OverflowErrorrR   rD   rE   rO   rP   rS   rT   r%   r   r-   )r)   rU   r  rV   r~   r   s   &     r   test_offsetMmapTests.test_offsetM  s0   &% 4	11H##Q1AGGJGGJlGVU#A(+		!((*g	EA$$Q* $$Q* ) GGI VU#A		!((*g&8	JAQsVV,GGI;
   Q-!!*affc1=  30 &q!  8c>:	  8c>:GGI GGI		&!K #I}=   .   GGI		&! s   AJ 27I)BJ 5I7 C&J =J I4/J 3I44J 7JJ JJ JJK,KKKKKKc                P     ! R  R\         P                   4      pV! \        4       R# )c                   &   a  ] tR tRt o R tRtV tR# )*MmapTests.test_subclass.<locals>.anon_mmapi  c                L    \         P                   P                  ! V R.VO5/ VB # )r   r9   )r   __new__)klassargskwargss   &*,r   r"  2MmapTests.test_subclass.<locals>.anon_mmap.__new__  s#    yy((DTDVDDr     N)__name__
__module____qualname____firstlineno__r"  __static_attributes____classdictcell____classdict__s   @r   	anon_mmapr     s     E Er    r0  N)r   r<   )r)   r0  s   & r   test_subclassMmapTests.test_subclass  s    	E		 	E 	(r    r{   zneeds mmap.PROT_READc                   ^
p\        \        R4      ;_uu_ 4       pVP                  RV,          4       RRR4       \        \        R4      ;_uu_ 4       p\        P                  VP	                  4       V\        P
                  R7      pV P                  \        VP                  R4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r^   r_   r`   Nr8   rn   r   )r:   r   r;   r   r>   r{   rE   rp   )r)   r~   r   rU   rV   s   &    r   test_prot_readonlyMmapTests.test_prot_readonly  s    &$2HHT'\"  &$1		!((*gDNN	CAi%8    s   B4AC4C	C	c                N    V P                  \        P                  \        4       R # r$   )assertIsr   errorr-   r(   s   &r   
test_errorMmapTests.test_error  s    djj'*r    c                   R p\        \        R4      ;_uu_ 4       pVP                  R\        V4      ,          4       RRR4       \        \        R4      ;_uu_ 4       p\        P	                  VP                  4       \        V4      4      pRRR4       \        \        V4      4       Fa  pV P                  XP                  4       V4       VP                  W,          4       V P                  VP                  4       V^,           4       Kc  	  V P                  \        XP                  ^x4       V P                  VR,          V4       VP                  ^ 4       \        \        V4      4       Fp  pV P                  VP                  4       V4       V P                  VP                  4       W,          4       V P                  VP                  4       V^,           4       Kr  	  V P                  \        VP                  4       VP                  ^4       V P                  VP                  ^4      R4       V P                  VP                  4       ^4       VP                  ^4       VP                  R4       V P                  VP                  4       ^4       V P                  VR,          R4       VP                  \        R	4      4       V P                  VP                  4       ^	4       V P                  VR,          R
4       V P                  \        VP                  R4       R#   + '       g   i     EL; i  + '       g   i     EL; i)r   r_   r   Nrg   rc   s   345r5   s
   012bar6789s   bazs
   012barbaz9s   ba)r:   r   r;   rD   r   r>   r   rB   rP   rq   rE   rQ   rO   r   rr   r   )r)   r   r   rU   rV   r   s   &     r   test_io_methodsMmapTests.test_io_methods  s8   &$2HHT#d)^$  &%  A		!((*c$i0A ! s4y!AQVVXq)LL!QVVXqs+ " 	*allG<1t$	q	s4y!AQVVXq)Q[[]DG4QVVXqs+ " 	*akk2	q	F+1%	q		1%1}-		&!"1%1}-*aggu5=     s   "L".L6"L3	6M	c                   R F  p\         P                  R^4      pVP                  V4       V P                  V^ ,          V4       VP                  ^ 4       V P                  VP	                  4       V4       VP                  4        K  	  R# )   N)r?        r9   )r   rq   rB   rO   r   r?   )r)   r   rV   s   &  r   test_non_ascii_byteMmapTests.test_non_ascii_byte  se     A		"a ALLOQqT1%FF1IQ[[]A.GGI !r    zrequires Windowsc                L   R pRp\        4       p\        4       p\        P                  R\        V4      VR7      pWR&   \        P                  R\        V4      VR7      pW&R&   V P                  VR,          V4       V P                  VR,          V4       VP	                  4        VP	                  4        \        P                  R\        V4      VR7      pWR&   \        P                  R\        V4      VR7      pW&R&   V P                  VR,          V4       V P                  VR,          V4       VP	                  4        VP	                  4        V P                  \        R4      ;_uu_ 4        \        P                  R^^R7       RRR4       R#   + '       g   i     R# ; i)r   s
   abcdefghijtagnamerc   rF  Nr9   )r   r   rD   rB   r?   r  rp   )r)   data1data2tagname1tagname2m1m2s   &      r   test_tagnameMmapTests.test_tagname  sD   !#!# YYr3u:xY81YYr3u:xY81A&A&



 YYr3u:xY81YYr3u:xY81A&A&



##Iy99IIb!QI' :999s   /FF#	c                    \         P                  R^d4      p\        4       p\         P                  R^dVR7      pV P                  \        P                  ! V4      \        P                  ! V4      4       R# )r   rE  Nr9   )r   r   assertGreaterrs   	getsizeof)r)   rK  rF  rL  s   &   r   test_sizeofMmapTests.test_sizeof  sR     YYr3 "YYr3Y03==,cmmB.?@r    c                >   \        4       p\        P                  RRVR7      p \        P                  RRVR7      R,           TP                  4        \        \        R4      ;_uu_ 4       pTP                  R	4       RRR4       \        \        R4      p\        P                  TP                  4       ^ 4      pTP                  4         TP                  ^ 4        TR,           TP                  4        R#     L; i  + '       g   i     L; i    L:; i    L7; i)
r     rE    rc   r_   Nrg   r9   s
   xxxxxxxxxx)r   r   r?   r:   r   r;   r>   rR   )r)   rF  rV   r   rU   s   &    r   test_crasher_on_windows!MmapTests.test_crasher_on_windows  s     !"IIb$I0	IIb$I03 	
	 &$2HHW  IIahhj!$			HHQK	aD 	
	%	  		s/   C7 +C>
D 	D 7C;>D	DDc                6   \         P                   ! 4       p V P                  \        4      ;_uu_ 4        \        P                  VP	                  4       ^
4      pRRR4       VP                  4        R#   + '       g   i     L"; i  TP                  4        i ; i)r^   N)socketrE   r-   r   r>   r?   )r)   r  rV   s   &  r   test_invalid_descriptor!MmapTests.test_invalid_descriptor  s`    
 MMO	""7++IIahhj"- , GGI ,+ GGIs"   B %A3B 3B	>B Bc                    \         P                  R^
4      ;_uu_ 4       pV P                  VP                  4       RRR4       V P                  XP                  4       R#   + '       g   i     L-; ir   Nr9   )r   assertFalser   rM   r   s   & r   test_context_managerMmapTests.test_context_manager  sE    YYr2!QXX& ! s   A  A0	c           	     f   V P                  \        4      ;_uu_ 4       p\        P                  R^
4      ;_uu_ 4       p\        h  + '       g   i     M; i RRR4       M  + '       g   i     M; iT P	                  XP
                  \        R4       T P                  XP                  R4       R# )r   Nz)wrong exception raised in context managerzcontext manager failedr9   )rE   	Exceptionr   r-   assertIsInstancer   rM   r   )r)   excrV   s   &  r   test_context_manager_exception(MmapTests.test_context_manager_exception  sw    y))S2r""a #"" *))) 	cmmWI	K":;s   A!A	AA!!A1	c                    \         P                  R^4      p\        P                  ! V4      pV P                  V! 4       V4       ?\	        4        V P                  V! 4       R4       R# r^  )r   weakrefrefr7  r   )r)   mmwrs   &  r   test_weakrefMmapTests.test_weakref  sG    YYr2[[_bdBbdD!r    c                :   \         P                  R^4      pV P                  VP                  R4      ^ 4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^4       R# )r   r    r   s   yz   pythonNr9   )r   rB   r;   )r)   rk  s   & r   0test_write_returning_the_number_of_bytes_written:MmapTests.test_write_returning_the_number_of_bytes_written(  ss    YYr2#*$+%!,),a0r    c                   \         P                  RR4      pV P                  VP                  4       VP                  R4        VP	                  R4       V P                  VP                  ^4      R4       V P                  \        VP                  4       V P                  \        VP                  ^*4       V P                  \        VP                  R4       R#   \
         d    T P                  R4        Li ; i)	r   i    rV  r   zresizing not supportedr    re   Nr9   )r   r   r?   rr   rR   rT   skipTestrB   rE   rQ   r   rq   r;   r   s   & r   test_resize_past_posMmapTests.test_resize_past_pos/  s    IIb$ 	t	4HHTN 	S)*akk2*allB7*aggv6  	4MM23	4s   C C98C9c                :   \         P                  R^4      pV P                  \        4      ;_uu_ 4        W,            RRR4       V P                  \        4      ;_uu_ 4        V^,           RRR4       R#   + '       g   i     LA; i  + '       g   i     R# ; ir^  )r   rE   rp   r   s   & r   test_concat_repeat_exception&MmapTests.test_concat_repeat_exception<  s`    IIb"y))E *y))E *) *))))s   	A6"
B	6B		B	c                   \         P                  R^4      pV P                  VP                  4       VP                  R4       VP	                  4       pV P                  V4       \        P                  P                  R4      '       d@   \        4       '       g.   V P                  \        VP                  ^\        R4      4       R# R# R# )r   rp  Nr9   )linuxandroid)r   r   r?   r;   r=   assertIsNoners   rt   ru   r
   rE   r-   rD   )r)   rk  results   &  r   test_flush_return_value!MmapTests.test_flush_return_valueC  s     YYr2!
&!LL##$899577 grxxC	NC 8 :r    c                   \         P                  ! R 4      p\         P                  ! R4      pRp\        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        WC4       EF  w  rVRV,          pWe,
          pRp	^ V^
,          V^,          V^,          3p
\	        \
        R4      ;_uu_ 4       pVP                  V4       VP                  4        \        P                  ! W4       EFT  w  r\        \        V4      p\        P                  VP                  4       VVVR7      ;_uu_ 4       pVP                  V4       VP                  \        V4      4      pV P!                  V4       V P#                  VP%                  R4      V4       V P#                  VP%                  R4      \'        V4      4       V P#                  VP%                  R4      \'        V4      4       V P#                  VP%                  R	4      \'        V4      4       R
R
R
4       VP                  \        X4      4      pV P!                  V4       EKW  	  R
R
R
4       EK  	  R
#   + '       g   i     LO; i  + '       g   i     EK  ; i)zr<mmap.mmap closed=False, access=(?P<access>\S+), length=(?P<length>\d+), pos=(?P<pos>\d+), offset=(?P<offset>\d+)>z<mmap.mmap closed=True>c              3      "   T F8  pV^,          \         P                  ,          \         P                  ,          x  K:  	  R# 5i)r   N)r   r  ).0r~   s   & r   	<genexpr>&MmapTests.test_repr.<locals>.<genexpr>Z  s:      NDL !A)C)CC445 5DLs   A Ar`   r   )rb   r   rb   r   posr   N)2   r   rU  i@B i )ACCESS_DEFAULTro   rx   rw   )rI   compiletuplezipr:   r   r;   r=   r   r   r|   r   r>   rO   rX   reprassertIsNotNonerB   groupr@   )r)   open_mmap_repr_patclosed_mmap_repr_patmapsizesr   r   r~   r   r   accesses	positionsr   rb   r  accintrk  rX   s   &                r   	test_reprMmapTests.test_reprQ  s   ZZ'(  "zz*DE:% NDLN%% NDLN N"75OF'>D%F7HFBJ	619=Ife$$
#,#4#4X#IKF$T62F299;#)*0*0 # 2 2 68 2 8 8b B,,U3((X)>G((X)>FL((U);SXF((X)>FL2 166tBx@E((/ $J %$  62 2 %$$s&   2A=I%/CI8I%I"I%%I7madvisezneeds madvisec                @   ^\         ,          p\        P                  RV4      pV P                  \        R4      ;_uu_ 4        VP	                  \        P
                  V4       RRR4       V P                  \        R4      ;_uu_ 4        VP	                  \        P
                  R4       RRR4       V P                  \        R4      ;_uu_ 4        VP	                  \        P
                  ^ R4       RRR4       V P                  \        R4      ;_uu_ 4        VP	                  \        P
                  \         \        P                  4       RRR4       V P                  VP	                  \        P
                  4      R4       V P                  VP	                  \        P
                  \         4      R4       V P                  VP	                  \        P
                  \         V4      R4       V P                  VP	                  \        P
                  ^ ^4      R4       V P                  VP	                  \        P
                  ^ V4      R4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELI; i)r   zmadvise start out of boundsNzmadvise length invalidzmadvise length too larger9   )
r<   r   r  rQ   r  MADV_NORMALr  rs   r  rB   r   s   &  r   test_madviseMmapTests.test_madviseu  s   8|IIb$##J0MNNIId&&- O##J0MNNIId&&+ O##J0HIIIId&&2. J##M3MNNIId&&#++> O4#3#34d;4#3#3X>E4#3#3XtDdK4#3#3Q:DA4#3#3Q=tD ONNNNNIIINNNs0   !I	!I$"I84JI!	$I5	8J		J	c                   \         p^V,          p\        R \        V4       4       4      p\        P                  RV4      pW4R&   VP	                  V4       V P                  \        V4      V4       V P                  VRV VRV 4       R# )zqIf the mmap is backed by the pagefile ensure a resize up can happen
and that the original data is still in place
c              3   N   "   T F  p\         P                  ! ^4      x  K  	  R# 5i   Nr   getrandbitsr  r   s   & r   r  CMmapTests.test_resize_up_when_mapped_to_pagefile.<locals>.<genexpr>        F4EqV''**4E   #%rc   Nr9   r<   r   r   r   rR   rB   rD   r)   
start_sizenew_sizer   rV   s   &    r   &test_resize_up_when_mapped_to_pagefile0MmapTests.test_resize_up_when_mapped_to_pagefile  s{    
 
z>FE*4EFFIIb*%!	Q*;Jkz):;r    c                   \         pV^,          p\        R \        V4       4       4      p\        P                  RV4      pW4R&   VP	                  V4       V P                  \        V4      V4       V P                  VRV VRV 4       R# )zIf the mmap is backed by the pagefile ensure a resize down up can happen
and that a truncated form of the original data is still in place
c              3   N   "   T F  p\         P                  ! ^4      x  K  	  R# 5ir  r  r  s   & r   r  EMmapTests.test_resize_down_when_mapped_to_pagefile.<locals>.<genexpr>  r  r  rc   Nr9   r  r  s   &    r   (test_resize_down_when_mapped_to_pagefile2MmapTests.test_resize_down_when_mapped_to_pagefile  sz    
 
?FE*4EFFIIb*%!	Q*9HtIX7r    c                p   ^\         ,          p\         p\        \        R4      pVP                  V4        \        P	                  VP                  4       V4      p\        P	                  VP                  4       V4      pV P                  \        4      ;_uu_ 4        VP                  V4       RRR4       V P                  \        4      ;_uu_ 4        VP                  V4       RRR4       VP                  4        VP                  V4       V P                  VP                  4       V4       V P                  \        P                  ! VP                  4       4      P                  V4       VP                  4        R#   + '       g   i     L; i  + '       g   i     L; i  TP                  4        i ; i)zaIf more than one mapping is held against a named file on Windows, neither
mapping can be resized
r   N)r<   r:   r   rv   r   r>   rE   r-   rR   r?   rB   rS   r%   r   r   )r)   r  reduced_sizerU   rK  rL  s   &     r   +test_resize_fails_if_mapping_held_elsewhere5MmapTests.test_resize_fails_if_mapping_held_elsewhere  s   
 \
	

:	188:z2B188:z2B""7++		,' ,""7++		,' ,HHJIIl#RWWY5RWWQXXZ088,GGGI ,+++ GGIs=   A%F# E=-%F# F$BF# =F	F# F 	F# #F5c                0   ^\         ,          p\         p\        4       p^p\        R \        V4       4       4      p\        P	                  RWR7      p\        P	                  RWR7      pWVRV% V P                  VRV V4       V P                  \        4      ;_uu_ 4        VP                  V4       RRR4       V P                  VP                  4       V4       V P                  VRV V4       V P                  VRV V4       R#   + '       g   i     L\; i)zIf a more than one mapping exists of the same name, none of them can
be resized: they'll raise an Exception and leave the original mapping intact
c              3   N   "   T F  p\         P                  ! ^4      x  K  	  R# 5ir  r  r  s   & r   r  UMmapTests.test_resize_succeeds_with_error_for_second_named_mapping.<locals>.<genexpr>  s      G4FqV''**4Fr  rE  Nr9   )
r<   r   r   r   r   rB   rE   r-   rR   rS   )r)   r  r  rF  data_lengthr   rK  rL  s   &       r   8test_resize_succeeds_with_error_for_second_named_mappingBMmapTests.test_resize_succeeds_with_error_for_second_named_mapping  s    
 \
!#GE+4FGGYYr:Y7YYr:Y7<KL[)40w''IIl# (J/L[)40L[)40	 ('s   DD	c                    ! R R4      p\         P                  \         P                  \         P                  \         P                  .p\         P                  \         P                  \         P                  .pV EF  pV! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        WV! 4       ,           RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        WV! 4       ^  RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        WV! 4       ^^1,           RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        V^V! 4       R1,           RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        VP                  V! 4       4       RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        VP                  R^V! 4       4       RRR4       RRR4       EK  	  V EF  pV! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        RWV! 4       ^% RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        RWV! 4       ^^1&   RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        RV^V! 4       R1&   RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        VP                  ^^V! 4       4       RRR4       RRR4       V! V4      ;_uu_ 4       w  rVV P                  \        R4      ;_uu_ 4        VP                  V! 4       4       RRR4       RRR4       EK  	  R#   + '       g   i     ELg; i  + '       g   i     ELs; i  + '       g   i     ELD; i  + '       g   i     ELP; i  + '       g   i     EL; i  + '       g   i     EL&; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EK  ; i  + '       g   i     EL`; i  + '       g   i     ELl; i  + '       g   i     EL:; i  + '       g   i     ELF; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EK\  ; i)	zR
gh-103987: Test that mmap objects raise ValueError
        for closed mmap files
c                   >   a  ] tR tRt o V 3R lR ltR tR tRtV tR# )KMmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContexti  c                   < V ^8  d   QhRR/# )r   returnNr'  )formatr/  s   "r   __annotate__XMmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContext.__annotate__  s     % %$ %r    c                    Wn         R # r$   ra   )r)   rb   s   &&r   __init__TMmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContext.__init__  s    $r    c                V  a \        \        R 4      V n        V P                  P                  \        P
                  ! ^d4      4       V P                  P                  4        \        P                  V P                  P                  4       ^dV P                  R7      o ! V3R lR4      pSV3# )r   ra   c                   .   <a  ] tR tRt o V3R ltRtV tR# )`MmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContext.__enter__.<locals>.Xi  c                (   < SP                  4        ^
# r^   )r?   r   s   &r   	__index__jMmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContext.__enter__.<locals>.X.__index__  s    	!r    r'  N)r(  r)  r*  r+  r  r,  r-  )r/  rV   s   @r   r   r    s     " "r    r   )
r:   r   rU   r;   r   	randbytesr=   r   r>   rb   )r)   r   rV   s   & @r   	__enter__UMmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContext.__enter__  sp    fe,V--c23IIdffmmos4;;IG" "
 1vr    c                :    V P                   P                  4        R # r$   )rU   r?   )r)   exc_type	exc_value	tracebacks   &&&&r   __exit__TMmapTests.test_mmap_closed_by_int_scenarios.<locals>.MmapClosedByIntContext.__exit__  s    r    )rb   rU   N)	r(  r)  r*  r+  r  r  r  r,  r-  r.  s   @r   MmapClosedByIntContextr    s     % % r    r  zmmap closed or invalidN   1r   s
   1111111111s   11111)r   ro   rw   rx   r  r  rQ   rr   rC   r   rq   )r)   r  read_access_modeswrite_access_modesrb   rV   r   s   &      r   !test_mmap_closed_by_int_scenarios+MmapTests.test_mmap_closed_by_int_scenarios  s>   	 	, 	
 
 (F'//6A++J8PQQacF R 0 (//6A++J8PQQacBK R 0 (//6A++J8PQQacBlO R 0 (//6A++J8PQQb13m$ R 0 (//6A++J8PQQFF13K R 0 (//6A++J8PQQFF4AC( R 0/+ (2 )F'//6A++J8PQQ"+AacBK R 0 (//6A++J8PQQ&.AacBlO R 0 (//6A++J8PQQ'/Ab13m$ R 0 (//6A++J8PQQFF1a% R 0 (//6A++J8PQQLL% R 0/# )/ RQQ 0//
 RQQ 0//
 RQQ 0//
 RQQ 0//
 RQQ 0//
 RQQ 0// RQQ 0//
 RQQ 0//
 RQQ 0//
 RQQ 0//
 RQQ 0//s  !P//P=P/!Q>
QQ(!Q?	Q+Q?:!R'R-R'!S.R;S%!S7S#S7
!T +
T5T !U6T4U#!U0UU02!VV,V!W -V,W P,&	P//Q Q	QQ(+Q<6	Q??RR$	R''R8;S	SS #S4.	S77T	T	T  T14U?	UUU-'	U00VV	VV),V=7	W  W_protectztest needs debug buildc                    ^ RI Hp \        P                  ! R4      p\	        RW!4      w  r4pV P                  VP                  4       R4       V P                  VP                  4       R4       R# )r   )r   a
  
            import faulthandler
            import mmap
            import os
            import sys
            from contextlib import suppress

            # Prevent logging access violations to stderr.
            faulthandler.disable()

            PAGESIZE = mmap.PAGESIZE
            PAGE_NOACCESS = 0x01

            with open(sys.argv[1], 'bw+') as f:
                f.write(b'A'* PAGESIZE)
                f.flush()

                m = mmap.mmap(f.fileno(), PAGESIZE)
                m._protect(PAGE_NOACCESS, 0, PAGESIZE)
                with suppress(OSError):
                    m.read(PAGESIZE)
                    assert False, 'mmap.read() did not raise'
                with suppress(OSError):
                    m.read_byte()
                    assert False, 'mmap.read_byte() did not raise'
                with suppress(OSError):
                    m.readline()
                    assert False, 'mmap.readline() did not raise'
                with suppress(OSError):
                    m.write(b'A'* PAGESIZE)
                    assert False, 'mmap.write() did not raise'
                with suppress(OSError):
                    m.write_byte(0)
                    assert False, 'mmap.write_byte() did not raise'
                with suppress(OSError):
                    m[0]  # test mmap_subscript
                    assert False, 'mmap.__getitem__() did not raise'
                with suppress(OSError):
                    m[0:10]  # test mmap_subscript
                    assert False, 'mmap.__getitem__() did not raise'
                with suppress(OSError):
                    m[0:10:2]  # test mmap_subscript
                    assert False, 'mmap.__getitem__() did not raise'
                with suppress(OSError):
                    m[0] = 1
                    assert False, 'mmap.__setitem__() did not raise'
                with suppress(OSError):
                    m[0:10] = b'A'* 10
                    assert False, 'mmap.__setitem__() did not raise'
                with suppress(OSError):
                    m[0:10:2] = b'A'* 5
                    assert False, 'mmap.__setitem__() did not raise'
                with suppress(OSError):
                    m.move(0, 10, 1)
                    assert False, 'mmap.move() did not raise'
                with suppress(OSError):
                    list(m)  # test mmap_item
                    assert False, 'mmap.__getitem__() did not raise'
                with suppress(OSError):
                    m.find(b'A')
                    assert False, 'mmap.find() did not raise'
                with suppress(OSError):
                    m.rfind(b'A')
                    assert False, 'mmap.rfind() did not raise'
        z-cr    N)test.support.os_helperr   textwrapdedentr   rB   strip)r)   r   codertstdoutstderrs   &     r   test_access_violations MmapTests.test_access_violations)  s\     	2 @  @B .dDAF--r    r'  N)?r(  r)  r*  r+  r*   r.   r[   r   r   skipIfr%   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r1  
skipUnlesshasattrr   r4  r9  r<  rB  rM  r   rR  rW  r[  r`  rf  rm  rq  ru  rx  r  r  r  r  r  r  r  r  r  r,  r-  r.  s   @r   r"   r"   $   s@    ]~@D __RWW_&FG @ H @D __RWW_&FG	$ H	$ __RWW_&EF/ G/8$K.' 8$;
E1-^
&;*895()<7r {35KL9 M9+ 6D D*<=( >(< D*<=A > A D*<= >4 D*<=	 >	"
<"17D"0H I6HE IE$ D*<=< >< D*<=8 >8 D*<= >. D*<=1 >1(T&l D*<=J79QRF. S >F.r    r"   c                      a  ] tR tRt o R tR tR tR tR tR t	]
P                  ! ]P                  ]8  R4      R	 4       t]
P                  ! ]P                  ]8  R4      R
 4       tRtV tR# )LargeMmapTestsit  c                $    \        \        4       R # r$   r   r   r(   s   &r   r*   LargeMmapTests.setUpv  	    vr    c                $    \        \        4       R # r$   r  r(   s   &r   r.   LargeMmapTests.tearDowny  r  r    c                   \         P                  R ,          R8X  g   \        '       d   \        RR\	        R4      ,          4       \        \        R4      p VP                  V4       VP                  V4       VP                  4        V#   \        \        \        3 dA     TP                  4        M  \        \        3 d     Mi ; i\        P                  ! R4      hi ; i):Nr4   Nrh   	largefilez-test requires %s bytes and a long time to run        r   z*filesystem does not have largefile support)rs   rt   r	   r   r@   r:   r   rO   r;   r=   r-   r  rQ   r?   r   r   )r)   
num_zeroestailrU   s   &&& r   _make_test_fileLargeMmapTests._make_test_file|  s    <<u$[?#kBRRT		RFF:GGDMGGI  
3 	R	]+ ##$PQQ	Rs0   2B
 
C !B21C 2CC CC c           	     X   V P                  R R4      ;_uu_ 4       p\        P                  VP                  4       ^ R\        P                  R7      ;_uu_ 4       pV P	                  VR,          ^ 4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)l        l        r   iN)r  r   r>   ro   rB   r)   rU   rV   s   &  r   test_large_offset LargeMmapTests.test_large_offset  sr    !!+t44188:qTEUEUVVZ[  9r2 W 54VV 544s#   >BB	3BBBB)	c           
     B   V P                  R R4      ;_uu_ 4       p\        P                  R8  d   V P                  \        4      ;_uu_ 4        \
        P                  VP                  4       R\
        P                  R7       RRR4       V P                  \        4      ;_uu_ 4        \
        P                  VP                  4       ^ \
        P                  R7       RRR4       \
        P                  VP                  4       R\
        P                  R7      ;_uu_ 4       pV P                  VP                  4       R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L@; i  + '       g   i     R# ; i)l    r  r  ra   Nr   )r  rs   r  rE   r  r   r>   ro   rQ   rB   rS   r  s   &  r   test_large_filesize"LargeMmapTests.test_large_filesize  s    !!+t44{{[( &&}55IIahhj+d>N>NIO 6&&z22IIahhj!D4D4DIE 3188:wt7G7GHHA  ;7 I 54 6522HH 544sT   3F5E	%F(5E'	AF!!E:	FE$F'E72F:F
FF	c           	        R pV\        V4      ^,          ,
          pV\        V4      ,           pV P                  W24      ;_uu_ 4       p\        P                  VP                  4       ^ \        P                  R7      ;_uu_ 4       pV P                  WcV V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)s     DEARdear  ra   N)rD   r  r   r>   ro   rB   )r)   boundaryr  rY   rZ   rU   rV   s   &&     r   _test_around_boundary$LargeMmapTests._test_around_boundary  s    3t9>)c$i!!%..!188:q1A1ABBa  t4 C /.BB /..s$   =B>B+	B>+B;6B>>C	z!test cannot run on 32-bit systemsc                0    V P                  \        4       R # r$   )r  r   r(   s   &r   test_around_2GBLargeMmapTests.test_around_2GB      ""3'r    c                0    V P                  \        4       R # r$   )r  r   r(   s   &r   test_around_4GBLargeMmapTests.test_around_4GB  r	  r    r'  N)r(  r)  r*  r+  r*   r.   r  r  r   r  r   r  rs   r  r   r  r  r,  r-  r.  s   @r   r  r  t  s{     "3

85 s*,OP( Q( s*,OP( Q(r    r  __main__r  )&test.supportr   r   r   r   r   r   r	   r
   test.support.import_helperr   r  r   r   test.support.script_helperr   r   r   r%   rI   r   r   rZ  r   rs   r  ri  r   r<   getpidr   r   r   TestCaser"   r  r(  mainr'  r    r   <module>r     s      5 1 7   	 	     
   V==299;-z2( 


L
MMM.!! M.`":(X&& :(z zMMO r    