
    g+              	          S r SSKJrJrJr  SSKr\R                  " \5      rSSK	J
r
  SSKJrJrJr  SSKJrJr  SSKJrJrJr  \(       a  SS	KJr  S
/rSrSr\" SS9(       a  SrGO!\(       Ga  SSKrSSKr\R8                  R;                  S5      r\(       a  \R>                  RA                  \5      (       d  \!" S\-  5      e\"" S S 5       5      (       d  \!" S\-  5      e\RG                  S\5        \R>                  RI                  \S5      r%\R>                  RM                  S\%5         SSK'J(r   \R>                  RW                  \%5        O7Sr\" S5      (       a  \RX                  R[                  S5        O\(       a  SrOSr\(       a/  SSK.J/r/  SSK0J1r1  SSK2J3r3  SS K	J4r4   " S! S
\Rj                  \5      r6g " S" S
\5      r6g! \) a  r*\
" \!" S\< S\*< 35      5      eSr*C*ff = f! \R>                  RW                  \%5        f = f)#z5
test passlib.ext.django against django source tests
    )absolute_importdivisionprint_functionN)suppress_cause)DJANGO_VERSIONDjangoTranslator_PasslibHasherWrapper)TestCase	TEST_MODE   )has_min_djangostock_config_ExtensionSupport)settingsHashersTestquick)maxzrequires >= 'default' test mode PASSLIB_TESTS_DJANGO_SOURCE_PATHz django source path not found: %rc              #      #    U  HF  n[         R                  R                  [         R                  R                  [        U5      5      v   MH     g 7fN)ospathexistsjoinsource_path).0names     ]/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_ext_django_source.py	<genexpr>r   6   s6      42t 77>>"'',,{D"ABB2s   AA)djangotestszinvalid django source path: %rz'using django tests from source path: %rr!   )test_hashersz6error trying to import django tests from source path (z): z3requires PASSLIB_TESTS_DJANGO_SOURCE_PATH to be setfullzt
WARNING: $PASSLIB_TESTS_DJANGO_SOURCE_PATH is not set; can't run Django's own unittests against passlib.ext.django
zdjango version too oldzdjango not installed)setting_changed)receiver)import_string)get_unbound_method_functionc                   l   ^  \ rS rSrSr\" \R                  5      rS rU 4S jr	S r
\
r\
r\
r\
rSrU =r$ )r   ^   zY
Run django's hasher unittests against passlib's extension
and workalike implementations
c           	        ^^^^	^
 U R                  [        SS9  SSKJm  TR                  mSSKJn  S H#  nU R                  [        U[        X5      5        M%     SSK
Jn  U R                  USS5        [        5       R                  m	[        [        SS	9UUU	4S
 j5       nU R!                  [        R"                  U5        U" 5         UU4S jm
S/mUU
4S jnS H  nU R                  TX%SS9  M     U R                  TSUSS9  g )NF)PASSLIB_CONTEXTcheckr   )adapter)hashers)make_passwordcheck_passwordidentify_hasheris_password_usable
get_hasher)django_des_cryptuse_duplicate_salt)weakc                  X  > U (       a
  U S   S:w  a  g TTR                   L d   e[        R                   Vs/ s H  nT" [        U5      " 5       5      PM     nnSU;   a  SU;  a  UR	                  S5        UR	                  S5        TR                  USS9  TR                  5         g s  snf )NsettingPASSWORD_HASHERShex_md5django_salted_md5django_disabledauto)schemes
deprecated)contextr   r9   r&   appendupdatereset_hashers)kwds	hash_pathr>   r-   r@   django_to_passlib_names      r   update_schemes)HashersTest.setUp.<locals>.update_schemes   s    DO/AA'//111 &.%>%>%>	 +=+C+EF%>   ',?w,NNN#6701w6B%%'s    B'c                    > TR                  SS9 Hx  n SU R                  ;  a  M  TR                  U 5      n[        U[        5      (       a  M=  [        USS5      =(       d    [        USS5      nUc  Mc  U=U l        =U l        U l        Mz     g)z.
sync django hasher config -> passlib hashers
T)resolveroundsN
iterations)	r>   setting_kwdspasslib_to_django
isinstancer	   getattrmin_desired_roundsmax_desired_roundsdefault_rounds)handlerhasherrK   r-   r@   s      r   update_rounds(HashersTest.setUp.<locals>.update_rounds   s      't<Gw';';; $66w?F!&*?@@ $VXt< A$V\4@ ~  hnmG.m1KgNd  =    c                 `   > TS   (       d  STS'    T" 5         STS'   U " U0 UD6$ ! STS'   f = f)z9
wrapper around arbitrary func, that first triggers sync
r   TF )wrappedargsrD   
_in_updaterV   s      r   update_wrapper)HashersTest.setUp.<locals>.update_wrapper   sE     "!}$(JqM.%(-
1--- ).
1s   & -)r>   rT   default_schemehashverifyneeds_updateverify_and_updateT)wrapdjango_to_passlib)load_extensionr   passlib.ext.django.modelsr-   r@   django.contrib.authr.   	patchAttrtest_hashers_modrP   passlib.hashr4   r   rF   r%   r$   
addCleanup
disconnect)selfr.   attrr4   rG   r^   r]   r-   r@   rF   rV   s         @@@@@r   setUpHashersTest.setUpn   s     EJ9ooG 4'
 /ww7MN' 6NN+-A5I
 &6%7%N%N"oE2( 3(  OOO66Gn&  J
.Hw4HH
 NN7$7dNSrX   c                 J   > U R                  5         [        [        U ]  5         g r   )unload_extensionsuperr   tearDown)ro   	__class__s    r   rv   HashersTest.tearDown   s    !!#+t-/rX   c                 $    U R                  S5      $ )Nzomitted by passlib)skipTestro   s    r   <lambda>HashersTest.<lambda>   s    T]]+?@rX   rZ   )__name__
__module____qualname____firstlineno____doc__r'   r
   rj   rq   rv   _OMITtest_pbkdf2_upgrade_new_hasher(test_check_password_calls_harden_runtimetest_bcrypt_harden_runtimetest_pbkdf2_harden_runtime__static_attributes____classcell__)rw   s   @r   r   r   ^   sK    	 00B0BC	
d	TL	0 A
 */& 490%*"%*"rX   c                       \ rS rSrS rSrg)r      c                 ,    U R                  [        5      e)zexternal django hasher tests)rz   hashers_skip_msgr{   s    r   !test_external_django_hasher_tests-HashersTest.test_external_django_hasher_tests   s    -- 011rX   rZ   N)r~   r   r   r   r   r   rZ   rX   r   r   r      s    	2rX   )7r   
__future__r   r   r   logging	getLoggerr~   logpasslib.utils.compatr   passlib.ext.django.utilsr   r   r	   passlib.tests.utilsr
   r   test_ext_djangor   r   r   r   __all__rk   r   r   sysenvirongetr   r   r   EnvironmentErrorallinfor   
tests_pathinsert
auth_testsr"   ImportErrorerrremovestderrwritedjango.core.signalsr$   django.dispatchr%   django.utils.module_loadingr&   r'   TestUtilsHashPassr   rZ   rX   r   <module>r      s   A @ g''1 0 \ \ 3  )      8**..!CDKww~~k**"#E#STT 424 4 4"#Ck#QRR:KHWW\\+w7
:&	(C HHOOJ' QVJJ ] ^ / . 3(9@K+&88:K K+h2h 2i  	6  "-s"4 56 6	6 HHOOJ's$   /G G,G''G,,G/ /H