
    hC(                       S SK Jr  S SKJr  S SKJr  S SKJr  S SKrS SK	J
r
JrJrJrJrJrJr  S SKJr   " S S	5      r " S
 S\5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S\\\5      r " S S\\\5      r " S S\\\\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\\\\5      r  " S$ S%\\\\5      r! " S& S'\\\\5      r"g)(    )annotations)abstractmethod)Any)mockN)	BaseQueueFifoDiskQueueFifoMemoryQueueFifoSQLiteQueueLifoDiskQueueLifoMemoryQueueLifoSQLiteQueue)QueuelibTestCasec                  L    \ rS rSrS
S jrSS jrSS jrSS jrS
S jrS r	Sr
g	)
DummyQueue   c                    / U l         g Nqselfs    `/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/queuelib/tests/test_queue.py__init__DummyQueue.__init__   s	        c                :    U R                   R                  U5        g r   )r   append)r   objs     r   pushDummyQueue.push   s    cr   c                \    U R                   (       a  U R                   R                  5       $ S $ r   )r   popr   s    r   r"   DummyQueue.pop   s    #vvtvvzz|/4/r   c                F    U R                   (       a  U R                   S   $ S $ )Nr   r   s    r   peekDummyQueue.peek   s    !VVtvvbz--r   c                    g r    r   s    r   closeDummyQueue.close"   s    r   c                ,    [        U R                  5      $ r   )lenr   r   s    r   __len__DummyQueue.__len__%   s    466{r   r   N)returnNone)r   r   r0   r1   )r0   z
Any | None)__name__
__module____qualname____firstlineno__r   r   r"   r&   r*   r.   __static_attributes__r)   r   r   r   r      s     0.r   r   c                  &    \ rS rSrS rS rS rSrg)InterfaceTest)   c                (   [        5       nU R                  [        5         UR                  S5        S S S 5        U R                  [        5         UR	                  5         S S S 5        U R                  [        5         UR                  5         S S S 5        U R                  [        5         [        U5        S S S 5        UR                  5         g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       NR= f)Nr   )r   assertRaisesNotImplementedErrorr   r&   r"   r-   r*   )r   queues     r   
test_queueInterfaceTest.test_queue*   s    23JJsO 423JJL 423IIK 423J 4 43333333s/   CC!=C2+D
C!
C/2
D 
Dc                    [        [        [        5      (       a   e[        [        [        5      (       a   e[        [        [        5      (       a   e[        [
        [        5      (       d   e[        [        [        5      (       d   e[        [        [        5      (       d   e[        [        [        5      (       d   e[        [        [        5      (       d   e[        [        [        5      (       d   e[        [        [        5      (       d   eg r   )
issubclasslistr   intr   r   r	   r   r   r   r
   r   r   s    r   test_issubclassInterfaceTest.test_issubclass6   s    dI....c9----.	::::*i0000/95555/95555-3333-3333/95555/95555r   c                   [        S[        5      (       a   e[        / [        5      (       a   e[        [        5       [        5      (       d   e[        [        5       [        5      (       d   e[        [	        5       [        5      (       d   e[
        [        [        [        4 H@  nU" U R                  5       5      n[        U[        5      (       d   eUR                  5         MB     g )N   )
isinstancer   r   r	   r   r   r   r
   r   tempfilenamer*   )r   clsr=   s      r   test_isinstanceInterfaceTest.test_isinstanceB   s    a++++b),,,,*,	2222/+Y7777/+Y7777!=/?SC))+,EeY////KKM Tr   r)   N)r2   r3   r4   r5   r>   rD   rK   r6   r)   r   r   r8   r8   )   s    

6	r   r8   c                  F    \ rS rSr\S
S j5       rS rS rS rS r	S r
Srg	)QueueTestMixinN   c                    [         er   )r<   r   s    r   r=   QueueTestMixin.queueO   s    !!r   c                j    U R                  5       nUR                  5       b   eUR                  5         g)zEmpty queue testN)r=   r"   r*   r   r   s     r   
test_emptyQueueTestMixin.test_emptyS   s&    JJLuuw		r   c                    U R                  5       nUR                  S5        UR                  5       S:X  d   eUR                  5         g N   ar=   r   r"   r*   rS   s     r   test_single_pushpop"QueueTestMixin.test_single_pushpopY   s3    JJL	tuuw$		r   c                    SnU R                  5       nUR                  U5        UR                  5       U:X  d   eUR                  5         g )Ns   }q(UbodyqU U	_encodingqUutf-8qUcookiesq}qUmetaq}qUheadersq	}Uurlq
X   file:///tmp/tmphDJYsgUdont_filterqUpriorityqK UcallbackqNUmethodqUGETqUerrbackqNu.rY   )r   elemr   s      r   test_binary_element"QueueTestMixin.test_binary_element_   s@    @ 	 JJL	tuuw$		r   c                   U R                  5       nU R                  [        U5      S5        UR                  S5        U R                  [        U5      S5        UR                  S5        UR                  S5        U R                  [        U5      S5        UR	                  5         UR	                  5         UR	                  5         U R                  [        U5      S5        UR                  5         g )Nr   rX   rG      b   c   )r=   assertEqualr-   r   r"   r*   rS   s     r   test_lenQueueTestMixin.test_lenl   s    JJLQ#	tQ#	t	tQ#			Q#		r   c                b   U R                  5       nU R                  UR                  5       5        UR                  S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R                  UR                  5       5        UR                  5         g rW   r=   assertIsNoner&   r   rd   r"   r*   rS   s     r   test_peek_one_element$QueueTestMixin.test_peek_one_elementz   su    JJL!&&(#	t4($'!&&(#		r   r)   N)r0   r   )r2   r3   r4   r5   r   r=   rT   rZ   r^   re   rj   r6   r)   r   r   rN   rN   N   s-    " "r   rN   c                  &    \ rS rSrS rS rS rSrg)FifoTestMixin   c                   U R                  5       nUR                  S5        UR                  S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        UR	                  5         gzBasic push/pop testrX   ra   rb   Nr=   r   rd   r"   r*   rS   s     r   test_push_pop1FifoTestMixin.test_push_pop1       JJL	t	t	t$'$'$'$'		r   c                .   U R                  5       nUR                  S5        UR                  S5        UR                  S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        UR	                  5         gzTest interleaved push and popsrX   ra   rb      d   eNrq   rS   s     r   test_push_pop2FifoTestMixin.test_push_pop2       JJL	t	t	t	t$'$'	t$'$'$'		r   c                f   U R                  5       nU R                  UR                  5       5        UR                  S5        UR                  S5        UR                  S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R                  UR                  5       5        UR                  5         g NrX   ra   rb   rh   rS   s     r   test_peek_fifoFifoTestMixin.test_peek_fifo   %   JJL!&&(#	t	t	t4(4($'4(4($'4(4($'!&&(#		r   r)   N)r2   r3   r4   r5   rr   ry   r~   r6   r)   r   r   rm   rm          
r   rm   c                  &    \ rS rSrS rS rS rSrg)LifoTestMixin   c                   U R                  5       nUR                  S5        UR                  S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        UR	                  5         grp   rq   rS   s     r   rr   LifoTestMixin.test_push_pop1   rt   r   c                .   U R                  5       nUR                  S5        UR                  S5        UR                  S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        UR	                  5         grv   rq   rS   s     r   ry   LifoTestMixin.test_push_pop2   r{   r   c                f   U R                  5       nU R                  UR                  5       5        UR                  S5        UR                  S5        UR                  S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        U R                  UR                  5       5        UR                  5         g r}   rh   rS   s     r   test_peek_lifoLifoTestMixin.test_peek_lifo   r   r   r)   N)r2   r3   r4   r5   rr   ry   r   r6   r)   r   r   r   r      r   r   r   c                  h    \ rS rSrSr\R                  R                  SS9S 5       rS r	S r
S rS	rg
)PersistentTestMixin   i z@Reenable once Scrapy.squeues stops extending from this testsuite)reasonc                N   U R                  5       nU R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S 5        U R                  [        UR                  S 5        UR	                  5         g )Nr    c                    U $ r   r)   )xs    r   <lambda>EPersistentTestMixin.test_non_bytes_raises_typeerror.<locals>.<lambda>   s    qr   )r=   r;   	TypeErrorr   r*   rS   s     r   test_non_bytes_raises_typeerror3PersistentTestMixin.test_non_bytes_raises_typeerror   sp     JJL)QVVQ/)QVVR0)QVVT2)QVV[9		r   c                    SnU R                  5       nUR                  U5        UR                  5         U R                  5       nUR                  5       nU R	                  X5        UR                  5         g )Ns   
)r=   r   r*   r"   rd   )r   e1r   e2s       r   test_text_in_windows(PersistentTestMixin.test_text_in_windows   sS    JJL	r
		JJLUUW 		r   c                   U R                  5       nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  5         UR                  5         UR                  5         AU R                  5       nU R	                  [        U5      S5        UR                  S5        UR                  5         UR                  5         UR                  5         AU R                  5       nUR                  5       c   eU R	                  [        U5      S5        UR                  5         g)	z'Test closing and re-opening keeps staterX   ra   rb   rw      rx   Nr   )r=   r   r"   r*   rd   r-   rS   s     r   test_close_open#PersistentTestMixin.test_close_open   s    JJL	t	t	t	t				JJLQ#	t				JJLuuw"""Q#		r   c                6   U R                  5       n/ SQnU R                  R                  5       (       d   eU H  nUR                  U5        M     U H  nUR	                  5         M     UR                  5         U R                  R                  5       (       a   eg)z+Test queue dir is removed if queue is empty   0   1   2   3   4N)r=   qpathexistsr   r"   r*   )r   r   valuesr   _s        r   test_cleanup PersistentTestMixin.test_cleanup  sz    JJL/zz  """"AFF1I  AEEG 		::$$&&&&&r   r)   N)r2   r3   r4   r5   	chunksizepytestmarkxfailr   r   r   r   r6   r)   r   r   r   r      s?    I[[Q  2'r   r   c                      \ rS rSrS rSrg)FifoMemoryQueueTesti!  c                    [        5       $ r   )r	   r   s    r   r=   FifoMemoryQueueTest.queue"        r   r)   Nr2   r3   r4   r5   r=   r6   r)   r   r   r   r   !      !r   r   c                      \ rS rSrS rSrg)LifoMemoryQueueTesti&  c                    [        5       $ r   )r   r   s    r   r=   LifoMemoryQueueTest.queue'  r   r   r)   Nr   r)   r   r   r   r   &  r   r   r   c                  &    \ rS rSrS rS rS rSrg)FifoDiskQueueTesti+  c                >    [        U R                  U R                  S9$ )N)r   )r   r   r   r   s    r   r=   FifoDiskQueueTest.queue.  s    TZZ4>>BBr   c                   U R                  5       nUR                  S5        U R                  5       R                  S5       n[        R
                  R                  USU5         UR                  5       b   eUR                  5       b   e S S S 5        S S S 5        UR                  5         g ! , (       d  f       N'= f! , (       d  f       N0= f)Ns	   somethingzw+tailf)
r=   r   rI   openr   patchobjectr&   r"   r*   )r   r   
empty_files      r   test_not_szhdr FifoDiskQueueTest.test_not_szhdr1  s    JJL	|$$T*jJJa*5668###557?"? 6 +
 	
		 65 +*s$   "B=#'B,B=,
B:	6B==
Cc                   / SQnU R                  5       nU H  nUR                  U5        M     [        U R                  R	                  S5      5      nU R                  [        U5      SU R                  -  S-   5        U H  nUR                  5         M     [        U R                  R	                  S5      5      nU R                  [        U5      S5        UR                  5         g)z#Test chunks are created and removedr   zq*   rG   N)
r=   r   rB   r   globrd   r-   r   r"   r*   )r   r   r   r   chunksr   s         r   test_chunksFifoDiskQueueTest.test_chunks<  s    /JJLAFF1I  djjood+,Va4>>&9A&=>AEEG  djjood+,Va(		r   r)   N)r2   r3   r4   r5   r=   r   r   r6   r)   r   r   r   r   +  s    C	r   r   c                      \ rS rSrSrSrg)ChunkSize1FifoDiskQueueTestiM  rG   r)   Nr2   r3   r4   r5   r   r6   r)   r   r   r   r   M      Ir   r   c                      \ rS rSrSrSrg)ChunkSize2FifoDiskQueueTestiQ  r   r)   Nr   r)   r   r   r   r   Q  r   r   r   c                      \ rS rSrSrSrg)ChunkSize3FifoDiskQueueTestiU  rc   r)   Nr   r)   r   r   r   r   U  r   r   r   c                      \ rS rSrSrSrg)ChunkSize4FifoDiskQueueTestiY     r)   Nr   r)   r   r   r   r   Y  r   r   r   c                       \ rS rSrS rS rSrg)LifoDiskQueueTesti]  c                ,    [        U R                  5      $ r   )r   r   r   s    r   r=   LifoDiskQueueTest.queue`  s    TZZ((r   c                   U R                  5       nUR                  S5        UR                  S5        UR                  5         U R                  R	                  5       R
                  nU R                  5       nUR                  5         UR                  5         U R                  R	                  5       R
                  (       d   U5       eg)z2Test size of queue file shrinks when popping itemsrX   ra   N)r=   r   r*   r   statst_sizer"   )r   r   sizes      r   test_file_size_shrinks(LifoDiskQueueTest.test_file_size_shrinksc  s~    JJL	t	t		zz ((JJL			zz ((.$.(r   r)   N)r2   r3   r4   r5   r=   r   r6   r)   r   r   r   r   ]  s    )
/r   r   c                      \ rS rSrS rSrg)FifoSQLiteQueueTestip  c                ,    [        U R                  5      $ r   )r
   r   r   s    r   r=   FifoSQLiteQueueTest.queues      tzz**r   r)   Nr   r)   r   r   r   r   p      +r   r   c                      \ rS rSrS rSrg)LifoSQLiteQueueTestiw  c                ,    [        U R                  5      $ r   )r   r   r   s    r   r=   LifoSQLiteQueueTest.queuez  r   r   r)   Nr   r)   r   r   r   r   w  r   r   r   )#
__future__r   abcr   typingr   unittestr   r   queuelib.queuer   r   r	   r
   r   r   r   queuelib.testsr   r   r8   rN   rm   r   r   r   r   r   r   r   r   r   r   r   r   r)   r   r   <module>r      s   "       , ("$ "J3 3l, ,^, ,^<' <'~!-9I !
!-9I !
&8HD"3 "3 "3 "3 /&8H/&+&8H++&8H+r   