+
    Bi                         R t ^ RIt^ RIt^ RIt ! R R]P                  4      t ! R R]P                  4      t ! R R]P                  4      t]R8X  d   ]P                  ! 4        R# R# )	zTest the secrets module.

As most of the functions in secrets are thin wrappers around functions
defined elsewhere, we don't need to test them exhaustively.
Nc                   <   a  ] tR t^t o RtR tR tR tR tRt	V t
R# )Compare_Digest_Testsz%Test secrets.compare_digest function.c           	        R F~  pV^d,          pV^d,          pV P                  \        P                  ! W#4      4       V P                  \        P                  ! VP                  R4      VP                  R4      4      4       K  	  R# )autf-8N)r   bcdxyz123)
assertTruesecretscompare_digestencodeselfsr   bs   &   (/usr/lib/python3.14/test/test_secrets.py
test_equalCompare_Digest_Tests.test_equal   s`    'A#A#AOOG22189OOG22188G3DahhwFWXY	 (    c           	        V P                  \        P                  ! R R4      4       V P                  \        P                  ! RR4      4       R F  pV^d,          R,           pV^d,          R,           pV P                  \        P                  ! W#4      4       V P                  \        P                  ! VP                  R4      VP                  R4      4      4       K  	  R# )	abcabcds   abcs   abcdqkr   N)xmna1b2c3)assertFalser
   r   r   r   s   &   r   test_unequal!Compare_Digest_Tests.test_unequal   s    //v>?//@A&A#A#AW33A9:W33AHHW4EqxxPWGXYZ	 'r   c                    R pVP                  R4      pV P                  \        \        P                  W4       V P                  \        \        P                  W!4       R# )abcder   N)r   assertRaises	TypeErrorr
   r   )r   r   r   s   &  r   test_bad_types#Compare_Digest_Tests.test_bad_types$   sG    HHW 	)W%;%;QB)W%;%;QBr   c                    V P                  \        P                  ! R R 4      \        4       V P                  \        P                  ! R R4      \        4       R# )r   xyzN)assertIsInstancer
   r   bool)r   s   &r   	test_boolCompare_Digest_Tests.test_bool-   s<    g44UEBDIg44UEBDIr    N)__name__
__module____qualname____firstlineno____doc__r   r   r$   r*   __static_attributes____classdictcell____classdict__s   @r   r   r      s&     /Z[CJ Jr   r   c                   6   a  ] tR t^3t o RtR tR tR tRtV t	R# )Random_Testsz*Test wrappers around SystemRandom methods.c                    R pR F`  p\        ^4       FN  p\        P                  ! V4      pT P                  ^ Tu;8*  ;'       d    ^V,          8  Mu WV3,          4       KP  	  Kb  	  R# )zrandbits(%d) returned %dN)         )ranger
   randbitsr	   )r   errmsgnumbitsins   &    r   test_randbitsRandom_Tests.test_randbits6   sU    +"G1X$$W-Q 3 3G 3Vl5JK  #r   c                    . ROp\        ^
4       F+  pV P                  \        P                  ! V4      V9   4       K-  	  R# )   N)rE                   @   )r<   r	   r
   choice)r   itemsr@   s   &  r   test_choiceRandom_Tests.test_choice>   s/    (rAOOGNN51U:; r   c                   \        ^^
4       F2  pV P                  \        P                  ! V4      \        V4      4       K4  	  V P	                  \
        \        P                  ^ 4       V P	                  \
        \        P                  R4       R# )rF   N)r<   assertInr
   	randbelowr"   
ValueError)r   r@   s   & r   test_randbelowRandom_Tests.test_randbelowD   s_    q"AMM'++A.a9 *g&7&7;*g&7&7<r   r,   N)
r-   r.   r/   r0   r1   rB   rN   rU   r2   r3   r4   s   @r   r7   r7   3   s     4L<= =r   r7   c                   <   a  ] tR t^Lt o RtR tR tR tR tRt	V t
R# )Token_TestszTest token functions.c                   \         P                  \         P                  \         P                  3 FC  pV P	                  VR 7      ;_uu_ 4        VP
                  p V! 4         V! R4       RRR4       KE  	  \         P                  pV P                  \        \         P                  ! R4      4      V4       V P                  \        \         P                  ! R4      4      ^V,          4       R#   \         d    T P                  RT,          4        Li ; i  \         d    T P                  RT,          4        Li ; i  + '       g   i     EK"  ; i))funcz$%s cannot be called with no argumentNz%s cannot be called with None)r
   token_bytes	token_hextoken_urlsafesubTestr-   r#   failDEFAULT_ENTROPYassertEquallen)r   rZ   namesizes   &   r   test_token_defaultsToken_Tests.test_token_defaultsO   s   (('*;*;**,D4((}}MFFJ )(, &&W0067>W..t45qv> ! MIIDtKLM ! FII=DEF )((sH   E C.#D.#D	E D	E #D=	:E <D=	=E  Ec           
     8   R F  pV P                  VR7      ;_uu_ 4        V P                  \        P                  ! V4      \        4       V P                  \        \        P                  ! V4      4      V4       RRR4       K  	  R#   + '       g   i     K  ; i)rE   rA   N)rE   rH      d   )r^   r(   r
   r[   bytesra   rb   )r   rA   s   & r   test_token_bytesToken_Tests.test_token_bytesa   sj     A""%%g&9&9!&<eD  W%8%8%;!<a@ #" !"""s   ABBc           	        R F  pV P                  VR7      ;_uu_ 4        \        P                  ! V4      pV P                  V\        4       V P                  \        V4      ^V,          4       T P                  \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      4       RRR4       K  	  R#   + '       g   i     K  ; i)rE   rh   c              3   F   "   T F  q\         P                  9   x  K  	  R # 5iN)string	hexdigits).0cs   & r   	<genexpr>-Token_Tests.test_token_hex.<locals>.<genexpr>o   s     #E1a)9)9$91s   !FTN)rE   r:      Z   )	r^   r
   r\   r(   strra   rb   r	   all)r   rA   r   s   &  r   test_token_hexToken_Tests.test_token_hexh   s     A""%%a(%%a-  Q1-#E1#E#E1#E EF	 #" !"""s   A6C C  Cc           	       a \         P                  \         P                  ,           R ,           oR F  pV P                  VR7      ;_uu_ 4        \        P
                  ! V4      pV P                  V\        4       T P                  \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      4       RRR4       K  	  R#   + '       g   i     K  ; i)z-_rh   c              3   ,   <"   T F	  qS9   x  K  	  R # 5irp   r,   )rs   rt   legals   & r   ru   1Token_Tests.test_token_urlsafe.<locals>.<genexpr>x   s     #:1Js   FTN)rE         L   )
rq   ascii_lettersdigitsr^   r
   r]   r(   ry   r	   rz   )r   rA   r   r   s   &  @r   test_token_urlsafeToken_Tests.test_token_urlsafeq   s    $$v}}4t; A""))!,%%a-#:#:#:#: :; #" !"""s   AC'CC"r,   N)r-   r.   r/   r0   r1   re   rl   r{   r   r2   r3   r4   s   @r   rX   rX   L   s#     ?$AG< <r   rX   __main__)
r1   r
   unittestrq   TestCaser   r7   rX   r-   mainr,   r   r   <module>r      sg      
!J8,, !JH=8$$ =2,<(## ,<^ zMMO r   