
    (pha              
       r   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKrS SKJr  S SKJrJr  S S	KJrJr  S S
KJr  S SKJrJr  S SKJrJr  S SKJ r J!r!  S SK"J#r#  S SK$J%r%  S SK&J'r'J(r(J)r)  S SK*J+r+  S SK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  S SK5J6r6J7r7  S SK8J9r9J:r:  S SK;J<r<  \ Rz                  R}                  \ Rz                  R                  \@5      5      rA\Rz                  R                  S \AS-   5         " S S5      rC\R                  S 5       rES rF\R                  R                  S 5       rI\R                  R                  S 5       rJ\R                  R                  S 5       rK\R                  R                  S 5       rL\R                  R                  S 5       rM\R                  R                  S  5       rN\R                  R                  S! 5       rO\R                  R                  \R                  R                  S"S#0 4S$S%S#04SS%S#0445      S& 5       5       rQ\R                  R                  \R                  R                  S"S'0 4S$S%S'04S#S%S'04SS%S'0445      S( 5       5       rR\R                  R                  S) 5       rS\R                  R                  S* 5       rT\R                  R                  S+ 5       rU\R                  R                  S, 5       rV\R                  R                  S- 5       rW\R                  R                  S. 5       rX\R                  R                  S/ 5       rY " S0 S15      rZ\R                  R                  S2 5       r[\R                  R                  S3 5       r\\R                  R                  S4 5       r]\R                  R                  S5 5       r^g)6    N)datetime)copysign)EventValue)sleep)Optional)timezone)Broker
get_broker)ClusterSentinel)Conf)DEFAULT_WORDLISTuuid)SuccessTask)monitor	save_task)pusher)Queue)post_executepre_enqueuepre_execute)Stat)
async_taskcount_groupdelete_groupfetchfetch_group
queue_sizeresultresult_group)	TaskErrormultiply)
add_months	add_years)workerz/../c                        \ rS rSrS rS rSrg)	WordClass*   c                     [         U l        g N)r   	word_listselfs    N/var/www/html/venv/lib/python3.13/site-packages/django_q/tests/test_cluster.py__init__WordClass.__init__+   s	    )    c                     U R                   $ r,   r-   r.   s    r0   	get_wordsWordClass.get_words.   s    ~~r3   r5   N)__name__
__module____qualname____firstlineno__r1   r6   __static_attributes__ r3   r0   r)   r)   *   s    *r3   r)   c                 D    U R                  [        SS5        [        5       $ )NDJANGO_REDISdefault)setattrr   r   )monkeypatchs    r0   brokerrC   2   s    ni8<r3   c                 .    U R                  5       SL d   eg NT)pingrC   s    r0   test_redis_connectionrH   8   s    ;;=D   r3   c                 F    [        S[        U SS9n[        U5      S:X  d   eg )N"django_q.tests.tasks.count_lettersTrC   sync  )r   r   r!   )rC   tasks     r0   	test_syncrO   <   s+    ,.>vTXD $<4r3   c                     [         R                  " [        5         [        SU SS9  S S S 5        g ! , (       d  f       g = f)Nz$django_q.tests.tasks.raise_exceptionTrK   )pytestraisesr#   r   rG   s    r0   test_sync_raise_exceptionrS   D   s'    	y	!9&tT 
"	!	!s   0
>c                    SU l         U R                  5         [        U S9nUR                  b   eUR                  R
                  [        R                  :X  d   eUR                  5       S:  d   eUR                  R                  5       SL d   eUR                  (       d   eUR                  SL d   eUR                  SL d   e[        S5        UR                  nUR
                  [        R                  :X  d   eUR                  5       SL d   eUR                  R                  5       SL d   eUR                   (       d   eUR                  5       SL d   eU R                  5         g )Nzinitial_test:qrG   r   TF      ?)list_keydelete_queuer   sentinelstatstatusr   STOPPEDstartis_alive
is_runningis_stoppingis_startingr   IDLEstophas_stopped)rC   crY   s      r0   test_cluster_initialre   J   s'   &FO
vA::66==DLL(((779q==:: D(((<<<==E!!!==E!!!	#J66D;;$))###668t:: E)))===668u
r3   c                     [        5       n [        5       nUR                  5         [        R                  " 5       n[	        UU U[        S5      S9nU R                  5       (       d   eUR                  5       [        R                  :X  d   eg )Nzsentinel_test:q
cluster_idrC   )
r   setuuidlibuuid4r   r   is_setrZ   r   r[   )start_event
stop_eventrh   ss       r0   test_sentinelrp   `   sp    'KJNNJ+,		A 88:%%%r3   c                    SU l         U R                  5         [        S[        U S9nU R	                  5       S:X  d   e[        5       nUR                  5       S:X  d   e[        5       nUR                  5       S:X  d   e[        5       nUR                  5         [        X$U S9  UR                  5       S:X  d   e[	        U S9S:X  d   eUR                  S5        [        X#[        SS5      5        UR                  5       S:X  d   eUR                  5       S:X  d   eUR                  S5        [        U5        UR                  5       S:X  d   e[        U5      S	:X  d   eU R                  5         g )
Ncluster_test:qrJ   rG      r   STOPfrM   )rV   rW   r   r   r    r   qsizer   ri   r   putr'   r   r   r!   )rC   rN   
task_queueresult_queueevents        r0   test_clusterr|   p   sU   &FO
,.>vD !###J"""7L1$$$GE	IIK
:V,"""V$)))NN6
:U3^4"""1$$$VL1$$$$<4
r3   c                 `   SU l         U R                  5         [        SU S9n[        5       n[	        5       nUR                  5         [        X#U S9  UR                  S5        [        5       n[        X$[        SS5      5        UR                  S5        [        U5        [        USS9nU/ :X  d   eg )Nrr   z'django_q.tests.tasks.return_falsy_valuerG   rt   ru   rv   wait)rV   rW   r   r   r   ri   r   rx   r'   r   r   r!   )rC   ary   rn   rz   values         r0   test_resultsr      s    &FO
1	A
 JJNN
:&1NN67L
:U3^4VL 12EB;;r3   c           	      z   SU l         U R                  5         [        S[        SU S9n[        S[	        5       SU S9n[        S[        SSU S9n[        S[	        5       SU S9n[        S	S
U S9n[        [
        SS[        U S9n[        S[        SS9U S9n[        SSSSU S9n	[        SXSS9n
[        SUU SSSS.S9n[        SS9R                  5       S:X  d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       d   e[        U	[        5      (       d   e[        U
[        5      (       d   e[        U[        5      (       d   eSnU R                  5       U:X  d   e[        5       n[        5       nUR                  5         [        U5       H  n[!        XU S9  M     U R                  5       S:X  d   eUR#                  5       U:X  d   eUR%                  S 5        ['        U
SS!9b   e[)        U
SS!9b   e[+        SSS!9b   e[+        SSSS"9b   e[-        SSS!9b   e[-        SSSS"9b   e[        5       n[/        UU[1        S#S$5      5        UR#                  5       U:X  d   eUR%                  S 5        [3        U5        UR#                  5       S:X  d   e[)        U5      nUc   eUR4                  S%L d   e['        U5      S&:X  d   e[)        U5      nUc   eUR4                  S%L d   e['        U5      S&:X  d   e[)        U5      nUc   eUR4                  SL d   e[)        U5      nUc   eUR4                  SL d   e[)        U5      nUc   eUR4                  S%L d   e['        U5      b   e[)        U5      nUc   eUR4                  S%L d   e['        U5      S&:X  d   e[)        U5      nUc   eUR4                  S%L d   e['        U5      S:X  d   e[)        U	5      nUc   eUR4                  S%L d   e['        U	5      S':X  d   e[)        U
5      nUc   eUR4                  S%L d   eUR&                  UR6                  S   R8                  :X  d   e[)        UR:                  5      U:X  d   e['        UR:                  5      UR&                  :X  d   e[+        S5      S   UR&                  :X  d   eUR=                  5       S   UR&                  :X  d   e[+        SS%S(9S   UR&                  :X  d   eUR=                  S%S(9S   UR&                  :X  d   e[-        S5      S   R8                  U/S   R8                  :X  d   e[-        SSS(9S   R8                  U/S   R8                  :X  d   e[?        S5      S):X  d   eURA                  5       S):X  d   e[?        SS%S(9S:X  d   eURA                  S%S(9S:X  d   e[C        S5      S):X  d   eURE                  5       S:X  d   e[C        SS%S*9nUb  US   S:X  d   eURE                  S%S*9nUb  US   S:X  d   e[)        U5      b   e[)        US+5      b   e['        US+5      b   eU R                  5         g ),Nrr   rJ   z)django_q.tests.test_cluster.assert_result)hookrC   z#django_q.tests.tasks.count_letters2oneargumentoomanyz-django_q.tests.test_cluster.assert_bad_resultz#django_q.tests.tasks.does_not_existdjango_q.tests.tasks.countdowni rG   i     z"django_q.tests.tasks.get_task_nameJohn)namez"django_q.tests.tasks.word_multiplydjangozfail.me)wordr   rC   z django_q.tests.tasks.get_user_idtest_j)rC   grouptest_kFZ   )rC   r   savetimeout)	q_optionsAmalia
   r   rt   r~   )countr   ru   rv   TrM      )failuresrs   )tasksd   )#rV   rW   r   r   r)   r$   assert_resultr   __str__
isinstancestrr    r   r   ri   ranger   rw   rx   r!   r   r"   r   r'   r   r   successargsidr   group_resultr   group_countr   group_delete)rC   
admin_userr   brd   deru   ghjk
task_country   rn   _rz   result_aresult_bresult_cresult_dresult_eresult_fresult_gresult_hresult_jdeleted_groups                              r0   test_enqueuer      sM   &FO
,8		A 	-8		A 	,<	A 	-<		A 	3VFKA8S!-GA,d.?	A 	,		A 	*JX	A 	*#hRTU	A X&&(H444aaaaaaaaaaJ*,,,JJNN:zf5 !###+++NN6!"%%%$$$r*2223;;;xb)111xqr2:::7L
:|U3^4:---VL1$$$ QxHt###!9QxHt###!9QxHu$$$QxHu$$$QxHt###!9QxHt###!9QxHt###!9QxHt###!9??QxHt###??hmmA.111118+++(-- HOO333!!$777  "1%888403xFFF  $ /2hooEEEx #&&8*Q-*:*::::x%03668*Q-:J:JJJJx A%%%!Q&&&x$/1444.!333!Q&&&  "a''' 6M M!$4$999)))5M M!$4$9998C=   !S>!!!
r3   z)cluster_config_timeout, async_task_kwargsrs   r   r   c                    SU l         U R                  5         [        SSU 0UD6  [        5       n[        5       n[        R
                  " 5       n[        R                  " SUR                  5      R                  5         [        UUUU US9nUR                  5       (       d   eUR                  5       [        R                  :X  d   eUR                  S:X  d   eU R!                  5         g )Ntimeout_test:qrC      rh   rC   r   rs   )
time.sleep   rV   purge_queuer   r   rj   rk   	threadingTimerri   r\   r   rl   rZ   r   r[   reincarnationsrW   rC   cluster_config_timeoutasync_task_kwargsrm   rn   rh   ro   s          r0   test_timeoutr   P  s     'FO
CvC1BC'KJJOOAz~~&,,.&	A 88:%%%q   
r3   r   c                    SU l         U R                  5         [        SSU 0UD6  [        5       n[        5       n[        R
                  " 5       n[        R                  " SUR                  5      R                  5         [        UUUU US9nUR                  5       (       d   eUR                  5       [        R                  :X  d   eUR                  S:X  d   eU R!                  5         g )Nr   rC      r   r   )r   r   r   r   s          r0   test_timeout_task_finishesr   p  s     'FO
CvC1BC'KJJOOAz~~&,,.&	A 88:%%%q   
r3   c                    SU l         [        SSSU S9  [        SSSU S9  [        SSSU S9  [        5       n[        5       n[        R                  " 5       nUR                  [        SS5        UR                  [        SS5        [        R                  " SUR                  5      R                  5         [        XCXPS	9nUR                  5       (       d   eUR                  5       [        R                  :X  d   eUR                  S:X  d   e[        SSSU S9  [        SSSU S9  [!        5       n[!        5       n[#        XtU S9  [#        XtU S9  [%        Xx['        S
S5      5        UR)                  5       S:X  d   eUR                  [        SS5        UR+                  S5        U" S5         [-        U5        S S S 5        [.        R0                  R3                  5       [        R4                  :X  d   eU R7                  5         g ! , (       d  f       NQ= f)Ntest_recycle_test:qdjango_q.tests.tasks.multiplyr   rG   RECYCLEWORKERSrs   r   rg   ru   rv   
SAVE_LIMITrt   r   rV   r   r   rj   rk   rA   r   r   r   ri   r\   r   rl   rZ   r[   r   r   r   r'   r   rw   rx   r   r   objectsr   r   rW   )	rC   rB   django_assert_num_queriesrm   rn   rh   ro   ry   rz   s	            r0   test_recycler     s    ,FO.1VD.1VD.1VD'KJJi+i+OOAz~~&,,.ZOA88:%%%q   .1VD.1VDJ7L
:&1
:&1
:U3^41$$$lA.V	"2	& 
'??  "doo555
 
'	&s   %G<<
H
c                    SU l         [        SU S9  [        SSU S9  [        SSSU S9  [        5       n[        5       n[        R                  " 5       n[        5       n[        5       nUR                  [        SS5        UR                  [        S	S
5        [        R                  " SUR                  5      R                  5         [        S5       H  n[        XSU S9  M     [        XV[        SS5      5        [!        X2X@S9nUR#                  5       (       d   eUR%                  5       [        R&                  :X  d   eUR)                  5       S:X  d   eUR                  [        SS
5        UR                  [        SS5        UR+                  S5        [-        U5        [.        R0                  R3                  5       S:X  d   e[        [.        R0                  R5                  5       R7                  SSS95      1 Sk:X  d   eU R9                  5         g )Nr   django_q.tests.tasks.hellorG   r   r   r   r   r   r   rs   ru   rv   rg   r   SAVE_LIMIT_PERfuncrt   T)flat>   r   r   r   )rV   r   r   rj   rk   r   rA   r   r   r   ri   r\   r   r   r'   r   r   rl   rZ   r[   rw   rx   r   r   r   r   filtervalues_listrW   )	rC   rB   rm   rn   rh   ry   rz   iro   s	            r0   test_save_limit_per_funcr     s    ,FO+F;/6B.1VD'KJJJ7Li+i+OOAz~~&,,.1Xzf5 
:U3^4ZOA88:%%% 1$$$lA..7VL??  "a'''w%%'33F3FG L   
 r3   c                 z   SU l         [        SSSU S9  [        5       n[        5       n[        R                  " 5       nUR                  [        SS5        UR                  [        SS5        [        R                  " S	UR                  5      R                  5         [        X2X@S
9nUR                  5       (       d   eUR                  5       [        R                  :X  d   eUR                  S:X  d   e[        SSSU S9  [!        5       n[!        5       n[#        XcU S9  [%        Xg['        SS5      5        UR)                  5       S:X  d   eUR                  [        SS5        UR+                  S5        [-        U5        [.        R0                  R3                  5       [        R4                  :X  d   eU R7                  5         g )Nztest_max_rss_test:qr   r   rG   MAX_RSSi N  r   rs   r   rg   ru   rv   r   rt   r   )rC   rB   rm   rn   rh   ro   ry   rz   s           r0   test_max_rssr     s`    ,FO.1VD'KJJi/i+OOAz~~&,,.ZOA88:%%%q   .1VDJ7L
:&1
:U3^41$$$lA.VL??  "doo555
r3   c                 z   SU l         [        SSSU S9  [        5       nUR                  5         [        5       n[        R
                  " 5       n[        X#X@SS9n[        U5      R                  5         UR                  [        SS	5        [        R                  " 5       n[        U5      S
:X  d   e[        R                  " UR                  US9b   e[        5       n[!        XrU S9  [        5       nUR#                  S5        [%        UU['        SS5      5        UR)                  5       S
:X  d   eU R+                  5         g )Nztest_bad_secret:qmath.copysignrs   rv   rG   F)rh   rC   r\   
SECRET_KEYOOPSr   )pidrh   rt   ru   )rV   r   r   ri   rj   rk   r   r   r   rA   r   get_alllenget
parent_pidr   r   rx   r'   r   rw   rW   )	rC   rB   rn   rm   rh   ro   rY   ry   rz   s	            r0   test_bad_secretr     s   )FO2f5JNN'KJJU	A 	GLLNlF3<<>Dt9>>88<DDDJ
:&17LNN6
c2
 1$$$
r3   c           
      0   UR                  [        SS5        [        5       nUS   US   SS0 [        R                  " 5       [        R                  " 5       SS S.	n[        X05        [        R                  R                  US	   S
9R                  5       (       d   e[        R                  R                  US	   S
9nUR                  S:X  d   e[        S5        [        R                  " 5       US'   [        X05        [        R                  R                  US	   S
9nUR                  S:X  d   e[        R                  " 5       US'   [        X05        [        R                  R                  US	   S
9nUR                  S:X  d   eU R                  5       S:X  d   eg )NMAX_ATTEMPTSr   rs   r   r   rs   rv   F	r   r   r   r   kwargsstartedstoppedr   r!   r   r   rU   r   r   )rA   r   r   r	   nowr   r   r   r   existsr   attempt_countr   r    )rC   rB   tagrN   
saved_tasks        r0   test_attempt_countr   #  s_   na0
&C!fA<<><<>
D d<<$t*-446666!!T$Z!0J##q(((	#JllnDOd!!T$Z!0J##q(((llnDOd!!T$Z!0J##q(((!###r3   c           
         [        5       nUS   US   SS0 [        R                  " 5       [        R                  " 5       SS S.	n[        X 5        [        R
                  R                  US   S9R                  5       (       d   e[        R
                  R                  US   S9nUR                  SL d   e[        S	5        US
   n[        R                  " 5       US
'   [        X 5        [        R
                  R                  US   S9nUR                  U:  d   e[        R                  " 5       US
'   SUS'   SUS'   [        X 5        [        R
                  R                  US   S9nUR                  SL d   eS US'   SUS'   XBS
'   [        X 5        [        R
                  R                  US   S9nUR                  SL d   eUR                  S:X  d   eg )Nrs   r   r   r   Fr   r   r   rU   r   r!   Tr   )r   r	   r   r   r   r   r   r   r   r   r   r   r!   )rC   r   rN   r   old_stoppeds        r0   test_update_failedr   F  s   
&C!fA<<><<>
D d<<$t*-446666!!T$Z!0J&&&	#Jy/KllnDOd!!T$Z!0J+++llnDODNDOd!!T$Z!0J%%%DNDO!Od!!T$Z!0J%%%(((r3   c                    ^  " U4S jS[         5      m[        5       n U S   U S   SSSS0 [        R                  " 5       [        R                  " 5       S	S S
.n[        5       n UR	                  5       nUR                  U S   U S   SS.5        US	 [        5       n UR	                  5       nUR                  U S   U S   SSS.5        US	 [        5       nUR                  U5        UR                  U5        UR                  U5        UR                  S5        T" SS9n[        XE5        UR                  R                  S5      S:X  d   eUR                  R                  S5      b   eUR                  R                  S5      S:X  d   eg )Nc                   2   >^  \ rS rSrUU 4S jrS rSrU =r$ )>test_acknowledge_failure_override.<locals>.VerifyAckMockBrokerit  c                 4   > [         TU ]  " U0 UD6  0 U l        g r,   )superr1   acknowledgements)r/   r   r   VerifyAckMockBroker	__class__s      r0   r1   Gtest_acknowledge_failure_override.<locals>.VerifyAckMockBroker.__init__u  s     %t5tFvF$&D!r3   c                 `    U R                   R                  US5      nUS-   U R                   U'   g )Nr   rs   )r  r   )r/   task_idr   s      r0   acknowledgeJtest_acknowledge_failure_override.<locals>.VerifyAckMockBroker.acknowledgey  s.    ))--gq9E-2QYD!!'*r3   )r  )r8   r9   r:   r;   r1   r  r<   __classcell__)r  r  s   @r0   r  r   t  s    	'	7 	7r3   r  rs   r   test_fail_ack_idTr   r   F)r   r   ack_idack_failurer   r   r   r   r   r   r!   test_fail_no_ack_id)r   r   r  r  test_success_ack_id)r   r   r  r   rt   key)rV   )r
   r   r	   r   copyupdater   rx   r   r  r   )r   task_fail_acktask_fail_no_acktask_success_ackrz   rC   r  s         @r0   !test_acknowledge_failure_overrider  r  s   7f 7 &C!fA$<<><<>M &C$))+1vs1v1FG 	'
&C$))+a&F+		
 	'7L]#%&%&V %0FL!""&&'9:a???""&&'<=EEE""&&'<=BBBr3   c                       \ rS rSr\R
                  R                  S 5       r\R
                  R                  S 5       r\R
                  R                  S 5       r	Sr
g)TestSignalsi  c                 P  ^  SUl         UR                  5         ST l        S T l        U 4S jn[        R
                  " U5        [        SSSUS9nT R                  SL d   eT R                  R                  S	5      U:X  d   e[        R                  " U5        UR                  5         g )
Nzpre_enqueue_test:qFc                 "   > STl         UTl        g rE   signal_was_calledrN   senderrN   r   r/   s      r0   handler4TestSignals.test_pre_enqueue_signal.<locals>.handler      %)D"DIr3   r   rs   rv   rG   Tr   )	rV   rW   r  rN   r   connectr   r   
disconnect)r/   rC   r  r  s   `   r0   test_pre_enqueue_signal#TestSignals.test_pre_enqueue_signal  s    .',$(		 	G$_aFC%%---yy}}T"g---w'r3   c                   ^  SUl         UR                  5         ST l        S T l        S T l        U 4S jn[
        R                  " U5        [        SSSUS9n[        5       n[        5       n[        5       nUR                  5         [        XFUS9  UR                  S5        [        XE[        S	S5      5        UR                  S5        [        XQ5        UR                  5         T R                  S
L d   eT R                  R!                  S5      U:X  d   eT R                  ["        :X  d   e[
        R$                  " U5        g )Nzpre_execute_test:qFc                 0   > STl         UTl        UTl        g rE   )r  rN   r   )r  rN   r   r   r/   s       r0   r  4TestSignals.test_pre_execute_signal.<locals>.handler  s    %)D"DIDIr3   r   rs   rv   rG   rt   ru   Tr   )rV   rW   r  rN   r   r   r"  r   r   r   ri   r   rx   r'   r   r   r   r   r#  r/   rC   r  r  ry   rz   r{   s   `      r0   test_pre_execute_signal#TestSignals.test_pre_execute_signal  s   .',$(			
 	G$_aFCW
w		z0vzsB8 %%%---yy}}T"g---yyH$$$w'r3   c                   ^  SUl         UR                  5         ST l        S T l        S T l        U 4S jn[
        R                  " U5        [        SSSUS9n[        5       n[        5       n[        5       nUR                  5         [        XFUS9  UR                  S5        [        XE[        S	S5      5        UR                  S5        [        XQ5        UR                  5         T R                  S
L d   eT R                  R!                  S5      U:X  d   eT R                  R!                  S5      S:X  d   e[
        R"                  " U5        g )Nzpost_execute_test:qFc                 "   > STl         UTl        g rE   r  r  s      r0   r  5TestSignals.test_post_execute_signal.<locals>.handler  r!  r3   r   rs   rv   rG   rt   ru   Tr   r!   )rV   rW   r  rN   r   r   r"  r   r   r   ri   r   rx   r'   r   r   r   r#  r)  s   `      r0   test_post_execute_signal$TestSignals.test_post_execute_signal  s   /',$(			 	W%_aFCW
w		z0vzsB8 %%%---yy}}T"g---yy}}X&",,,(r3   )r   r  rN   N)r8   r9   r:   r;   rQ   mark	django_dbr$  r*  r/  r<   r=   r3   r0   r  r    sZ    [[ " [[( (: [[) )r3   r  c                 T    U c   eU R                   SL d   eU R                  S:X  d   eg )NTrM   )r   r!   rN   s    r0   r   r     s2    <<4;;$r3   c                 0    U c   eU R                   SL d   eg )NF)r   r4  s    r0   assert_bad_resultr6    s     <<5   r3   c                     [        SSS5      n [        U S5      nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        SSS5      n [        U S5      nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        SSS5      n [        U S5      nUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   eg )
N  r   r   r        rs         )r   r%   yearmonthdayinitial_datenew_dates     r0   test_add_monthsrC  	  s     D!Q'L,*H==D   >>Q<<1 D"a(L,*H==D   >>Q<<1 D!R(L,*H==D   >>Q<<2r3   c                  @   [        SSS5      n [        U S5      nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        SSS5      n [        U S5      nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )Nr8  r   rs   r:  r<     )r   r&   r=  r>  r?  r@  s     r0   test_add_yearsrF  !  s     D!Q'Lq)H==D   >>Q<<1 D!R(Lq)H==D   >>Q<<2r3   )_ossysr   r   rj   r   mathr   multiprocessingr   r   timer   typingr   rQ   django.utilsr	   django_q.brokersr
   r   django_q.clusterr   r   django_q.confr   django_q.humanhashr   django_q.modelsr   r   django_q.monitorr   r   django_q.pusherr   django_q.queuesr   django_q.signalsr   r   r   django_q.statusr   django_q.tasksr   r   r   r   r   r    r!   r"   django_q.tests.tasksr#   r$   django_q.utilsr%   r&   django_q.workerr'   pathdirnameabspath__file__myPathinsertr)   fixturerC   rH   r1  r2  rO   rS   re   rp   r|   r   r   parametrizer   r   r   r   r   r   r   r   r  r  r   r6  rC  rF  r=   r3   r0   <module>rd     s   	 
     (    ! / .  5 ) / " ! C C  	 	 	 5 0 "	2	3 6F? #   
!     U U
  * & &  >  . d dN /	
B	i^		1~ . /	
B	i^	
YN		1~	 . $ $N % %P  D  : $ $D () ()V 7C 7CtL) L)^   ! !
  .  r3   