+
    i                         R t ^ RIt^ RIt]P                  ! ]4      t^ RIHt . ROt ! R R]4      t	^ RI
HtHt ]R,          t]R,          t ! R R	]4      t^ R
I
Ht . ROt ! R R]4      tR# )z&passlib.tests -- tests for passlib.pwdN)TestCase	UtilsTestc                   .   a  ] tR t^t o RtRtR tRtV tR# )r   ztest internal utilitieszpasslib.pwdc                f   ^ RI Hp V P                  V! R4      ^ 4       V P                  V! R	4      ^ 4       V P                  V! R4      ^4       V P                  V! R
4      ^4       V P                  V! R4      ^4       V P                  V! R4      ^4       V P                  V! R4      R^R7       R# )z_self_info_rate())_self_info_rate ababcdabcdaaaag@?)placesNaaaaaaaaabababababababab abcdabcdabcdabcdabcdabcdabcdabcd)passlib.pwdr   assertEqualassertAlmostEqual)selfr   s   & T/var/www/html/photoedit/myenv/lib/python3.14/site-packages/passlib/tests/test_pwd.pytest_self_info_rateUtilsTest.test_self_info_rate   s    /,a0115.22A60!44a8z:F1M     N)	__name__
__module____qualname____firstlineno____doc__descriptionPrefixr   __static_attributes____classdictcell____classdict__s   @r   r   r      s     !%N Nr   )genworddefault_charsetsascii_62hexc                   V   a a ] tR t^@t oRtRtV 3R ltR	R ltR tR t	R t
RtVtV ;t# )
WordGeneratorTesttest generation routineszpasslib.pwd.genword()c                |   < \         \        V `  4        ^ RIHp V P                  VRV P                  R4      4       R# )    )SequenceGeneratorrngzpwd generatorN)superr'   setUpr   r+   	patchAttr	getRandom)r   r+   	__class__s   & r   r.   WordGeneratorTest.setUpD   s3    ,. 	2(%~~o6	8r   c                
   V P                  \        V4      V4       V'       d-   VRJ d   TpV P                  \        \        V4      4      V4       V P                  \        RP                  V4      4      \        V4      4       R# )2check result list matches expected count & charsetTr   N)r   lensetjoin)r   resultscountcharsuniques   &&&&&r   assertResultContents&WordGeneratorTest.assertResultContentsL   s`    Wu-~SW.7RWWW-.E
;r   c                    \        4       pV P                  \        V4      ^	4       V P                  \        R\         RR7       R# )general behavior(?i)unexpected keyword.*badkwdTbadkwdN)r"   r   r5   assertRaisesRegex	TypeErrorr   results   & r   test_generalWordGeneratorTest.test_generalU   s:     Va( 	y*JG\`ar   c                "   \        RR7      pV P                  VR\        4       \        \        R7      p\	        R4       Uu. uF  p\        V4      NK  	  ppV P                  VR\        4       V P                  \        \         RR7       R# u upi )'returns' keyword  returnsinvalid-typeN)r"   r<   r$   iterrangenextassertRaisesrD   r   r8   gen_s   &   r   test_returnsWordGeneratorTest.test_returns_   sv     $'!!'4: d#&+Dk2k49k2!!'4: 	)WnE	 3s   Bc                    \        RRR7      pV P                  VR\        4       \        ^RRR7      pV P                  VRR^R7       V P                  \        \         RRR7       R# )	z'charset' & 'chars' optionsr%   rK   )charsetrM   abc)lengthr:   rM   r;   )r:   rY   N)r"   r<   r%   rR   rD   r   r8   s   & r   test_charsetWordGeneratorTest.test_charsetm   sb     %6!!'45 %>!!'4r!B 	)WE5Ir   r   )T)r   r   r   r   r   r   r.   r<   rG   rV   r^   r   r   __classcell__)r1   r!   s   @@r   r'   r'   @   s0     "/8<bFJ Jr   r'   )	genphrasec                   J   a  ] tR t^t o RtRtR
R ltR tR tR t	R t
RtV tR	# )PhraseGeneratorTestr(   zpasslib.pwd.genphrase()c                @  a V P                  \        V4      V4       V'       d-   VRJ d   TpV P                  \        \        V4      4      V4       \        \        P                  P                  V3R lV 4       4      4      pV P                  V\        V4      4       R# )r4   Tc              3   D   <"   T F  qP                  S4      x  K  	  R # 5i)N)split).0elemseps   & r   	<genexpr>;PhraseGeneratorTest.assertResultContents.<locals>.<genexpr>   s     /TGD

3Gs    N)r   r5   r6   	itertoolschainfrom_iterable)r   r8   r9   wordsr;   ri   outs   &&&&&f r   r<   (PhraseGeneratorTest.assertResultContents   sr    Wu-~SW.7)/////TG/TTUc%j)r   c                    \        4       pV P                  \        VP                  R4      4      ^4       V P	                  \
        R\         RR7       R# )r?    r@   TrA   N)ra   r   r5   rf   rC   rD   rE   s   & r   rG    PhraseGeneratorTest.test_general   sD     V\\#./3 	y*JI^bcr   c                   \        ^FR7      pV P                  \        VP                  R4      4      ^4       \        ^R7      pV P                  \        VP                  R4      4      ^4       \        ^^0R7      pV P                  \        VP                  R4      4      ^4       \        ^^R7      pV P                  \        VP                  R4      4      ^4       R# )z'length' & 'entropy' keywords)entropyrs   )r[   )r[   rv   N)ra   r   r5   rf   rE   s   & r   test_entropy PhraseGeneratorTest.test_entropy   s     2&V\\#./3 !$V\\#./3 !R0V\\#./3 !R0V\\#./3r   c                6   \        R\        R7      pV P                  VR\        4       \        \        \        R7      p\	        R4       Uu. uF  p\        V4      NK  	  ppV P                  VR\        4       V P                  \        \         RR7       R# u upi )rJ   i  )rM   ro   rN   rL   N)ra   simple_wordsr<   rO   rP   rQ   rR   rD   rS   s   &   r   rV    PhraseGeneratorTest.test_returns   sz     D=!!'4> L9&+Dk2k49k2!!'4> 	)YG	 3s   Bc                    \        \        RR7      pV P                  VR\        4       \        ^\        RR7      pV P                  VR\        ^R7       V P                  \        \         \        RR7       R# )z'wordset' & 'words' optionsrK   )ro   rM   )r[   ro   rM   r\   bip39)ro   wordsetN)ra   rz   r<   rR   rD   r]   s   & r   test_wordset PhraseGeneratorTest.test_wordset   sb     ,=!!'4> 1L$G!!'4d!K 	)YlGTr   r   N)Trs   )r   r   r   r   r   r   r<   rG   rw   rV   r   r   r   r    s   @r   rc   rc      s0     "1*d4&HU Ur   rc   )r   GenerateTestStrengthTest)alphabetagamma)r   rl   logging	getLoggerr   logpasslib.tests.utilsr   __all__r   r   r"   r#   r$   r%   r'   ra   rz   rc   r   r   r   <module>r      s|    ,
  g''1 )N NN 2J'u9J 9JD ")DU( DUr   