+
    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\        4      '       g   Q h\        V\        4      '       g   Q hV P	                  \
        \        P                  W4       V P	                  \
        \        P                  W!4       R# )abcder   N)r   
isinstancestrbytesassertRaises	TypeErrorr
   r   )r   r   r   s   &  r   test_bad_types#Compare_Digest_Tests.test_bad_types$   sk    HHW!S!!!!!U####)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)rH                   @   )r?   r	   r
   choice)r   itemsrC   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# )rI   N)r?   assertInr
   	randbelowr%   
ValueError)r   rC   s   & r   test_randbelowRandom_Tests.test_randbelowD   s_    q"AMM'++A.a9 *g&7&7;*g&7&7<r   r/   N)
r0   r1   r2   r3   r4   rE   rQ   rX   r5   r6   r7   s   @r   r:   r:   3   s     4L<= =r   r:   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subTestr0   r&   failDEFAULT_ENTROPYassertEquallen)r   r]   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)rH   rD   N)rH   rK      d   )ra   r+   r
   r^   r$   rd   re   )r   rD   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)rH   rk   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)rH   r=      Z   )	ra   r
   r_   r+   r#   rd   re   r	   all)r   rD   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-_rk   c              3   ,   <"   T F	  qS9   x  K  	  R # 5irr   r/   )ru   rv   legals   & r   rw   1Token_Tests.test_token_urlsafe.<locals>.<genexpr>x   s     #:1Js   FTN)rH         L   )
rs   ascii_lettersdigitsra   r
   r`   r+   r#   r	   r{   )r   rD   r   r   s   &  @r   test_token_urlsafeToken_Tests.test_token_urlsafeq   s    $$v}}4t; A""))!,%%a-#:#:#:#: :; #" !"""s   AC'CC"r/   N)r0   r1   r2   r3   r4   rh   rn   r|   r   r5   r6   r7   s   @r   r[   r[   L   s#     ?$AG< <r   r[   __main__)
r4   r
   unittestrs   TestCaser   r:   r[   r0   mainr/   r   r   <module>r      sg      
!J8,, !JH=8$$ =2,<(## ,<^ zMMO r   