
    h %                       S SK J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  S SKJr  S SKJrJrJrJr   " S S	\5      r " S
 S\S9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)    )annotationsN)abstractmethod)deque)suppress)Path)AnyBinaryIOLiteralcastc                  ,    \ rS rSrSrSS jrSS jrSrg)	_BaseQueueMeta   zB
Metaclass to check queue classes against the necessary interface
c                6    U R                  [        U5      5      $ N)__subclasscheck__type)clsinstances     U/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/queuelib/queue.py__instancecheck__ _BaseQueueMeta.__instancecheck__   s    $$N
 	
    c                   [        US5      =(       a    [        UR                  5      =(       a    [        US5      =(       a    [        UR                  5      =(       a    [        US5      =(       as    [        UR                  5      =(       aW    [        US5      =(       aD    [        UR
                  5      =(       a(    [        US5      =(       a    [        UR                  5      $ )Npushpoppeekclose__len__)hasattrcallabler   r   r   r   r   )r   subclasss     r   r    _BaseQueueMeta.__subclasscheck__   s    Hf% 	+'	+%(	+ &	+ &)		+
 '	+ '*	+ (	+ ),	+ ))*	
r    N)r   r   returnbool)r!   r   r$   r%   )__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__r#   r   r   r   r      s    


r   r   c                  n    \ rS rSr\S	S j5       r\S
S j5       r\S
S j5       r\SS j5       rSS jr	Sr
g)	BaseQueue'   c                    [         er   NotImplementedErrorselfobjs     r   r   BaseQueue.push(       !!r   c                    [         er   r0   r3   s    r   r   BaseQueue.pop,   r6   r   c                    [         er   r0   r8   s    r   r   BaseQueue.peek0   r6   r   c                    [         er   r0   r8   s    r   r   BaseQueue.__len__4   r6   r   c                    g r   r#   r8   s    r   r   BaseQueue.close8       r   r#   Nr4   r   r$   Noner$   z
Any | Noner$   intr$   rB   )r&   r'   r(   r)   r   r   r   r   r   r   r+   r#   r   r   r-   r-   '   sU    " " " " " " " "r   r-   )	metaclassc                  T    \ rS 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S jr
S	rg
)FifoMemoryQueue<   z7In-memory FIFO queue, API compliant with FifoDiskQueue.c                "    [        5       U l        g r   )r   qr8   s    r   __init__FifoMemoryQueue.__init__?   s    "Wr   c                :    U R                   R                  U5        g r   )rL   appendr2   s     r   r   FifoMemoryQueue.pushB   s    cr   c                \    U R                   (       a  U R                   R                  5       $ S $ r   )rL   popleftr8   s    r   r   FifoMemoryQueue.popE   s    #'66tvv~~3t3r   c                F    U R                   (       a  U R                   S   $ S $ Nr   rL   r8   s    r   r   FifoMemoryQueue.peekH   s     FFtvvay,,r   c                    g r   r#   r8   s    r   r   FifoMemoryQueue.closeK   r@   r   c                ,    [        U R                  5      $ r   )lenrL   r8   s    r   r   FifoMemoryQueue.__len__N   s    466{r   rW   NrF   rA   rC   rD   )r&   r'   r(   r)   r*   rM   r   r   r   r   r   r+   r#   r   r   rI   rI   <   s#    A%4-r   rI   c                  ,    \ rS rSrSrSS jrSS jrSrg)LifoMemoryQueueR   z7In-memory LIFO queue, API compliant with LifoDiskQueue.c                \    U R                   (       a  U R                   R                  5       $ S $ r   )rL   r   r8   s    r   r   LifoMemoryQueue.popU   s    #vvtvvzz|/4/r   c                F    U R                   (       a  U R                   S   $ S $ )NrW   r8   s    r   r   LifoMemoryQueue.peekX   s    !VVtvvbz--r   r#   NrC   )r&   r'   r(   r)   r*   r   r   r+   r#   r   r   r_   r_   R   s    A0.r   r_   c                      \ rS rSrSrSr\R                  " \5      rSSS jjr	SS jr
SSS jjrSS jrSS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jrSrg)FifoDiskQueue\   zPersistent FIFO queue.>Lc                   [        U5      U l        [        U5      R                  5       (       d  [        U5      R	                  SS9  U R                  U5      U l        U R                  S   U l        U R                  U R                  S   S   S5      U l	        U R                  U R                  S   S   5      U l
        [        R                  " U R                  R                  5       U R                  S   S   [        R                  5        g )	NT)parents	chunksizeheadr   ab+tail   )strpathr   existsmkdir	_loadinfoinforl   
_openchunkheadftailfoslseekfilenoSEEK_SET)r3   rr   rl   s      r   rM   FifoDiskQueue.__init__b   s    I	Dz  ""JT*NN9-	;/__TYYv%6q%95A
__TYYv%6q%9:

""$dii&7&:BKKHr   c                .   [        U[        5      (       d!  [        S[        U5      R                   35      eU R
                  S   u  p#US-  n[        R                  " U R                  [        U5      5      n[        R                  " U R                  R                  5       XA-   5        X0R                  :X  a8  SnUS-  nU R                  R                  5         U R!                  US5      U l        U R
                  S==   S-  ss'   X#/U R
                  S'   g )NUnsupported type: rm      r   rn   size)
isinstancebytes	TypeErrorr   r&   rv   structpackszhdr_formatr\   rz   writerx   r|   rl   r   rw   )r3   stringhnumhposszhdrs        r   r   FifoDiskQueue.pushl   s    &%((0f1F1F0GHIIYYv&
	D--s6{;
""$en5>>!DAIDJJu5DJ		&Q!L		&r   c                T    [        U R                  SUS 35      R                  U5      $ )NrL   05d)r   rr   open)r3   numbermodes      r   rw   FifoDiskQueue._openchunk{   s'    DII6#,/055d;;r   c                   U R                   S   u  pnX/U R                   S   :  a  g U R                  R                  5       n[        R                  " X@R
                  5      nU(       d  g [        R                  " U R                  U5      u  n[        R                  " XF5      nUS-  nX0R
                  U-   -  nX R                  :X  az  XR                   S   S   ::  ae  S=p#US-  nU R                  R                  5         [        U R                  R                  5      R                  5         U R                  U5      U l        U R                   S==   S-  ss'   XU/U R                   S'   U$ )Nro   rm   r   r   r   )rv   ry   r|   rz   read
szhdr_sizer   unpackr   rl   r   r   nameunlinkrw   )r3   tnumtcnttoffsettfdr   r   datas           r   r   FifoDiskQueue.pop~   s(   "ii/G<499V,,jj!__--- 1 159wws!	??T))>>!dii.?.B&BDAIDJJ!((*.DJ		&Q!1		&r   c                   U R                   S   u  pnX/U R                   S   :  a  g U R                  R                  5       n[        R                  " US[        R
                  5      n[        R                  " X@R                  5      nU(       d  g [        R                  " U R                  U5      u  n[        R                  " XG5      n[        R                  " XE[        R                  5        U$ )Nro   rm   r   )rv   ry   r|   rz   r{   SEEK_CURr   r   r   r   r   r}   )	r3   r   r   _r   tfd_initial_posr   r   r   s	            r   r   FifoDiskQueue.peek   s    		&)A<499V,,jj!((32;;7__--- 1 159wws!
r{{3r   c                    U R                   R                  5         U R                  R                  5         U R                  U R                  5        [        U 5      S:X  a  U R                  5         g g rV   )rx   r   ry   	_saveinforv   r\   _cleanupr8   s    r   r   FifoDiskQueue.close   sK    



tyy!t9>MMO r   c                <    [        [        U R                  S   5      $ )Nr   )r   rE   rv   r8   s    r   r   FifoDiskQueue.__len__   s    C6*++r   c                    U R                  5       nUR                  5       (       aA  [        [        [        [
        4   [        R                  " UR                  5       5      5      nU$ US/ SQSS/S.nU$ )Nr   )r   r   r   )rl   r   ro   rm   )		_infopathrs   r   dictrq   r   jsonloads	read_text)r3   rl   infopathrv   s       r   ru   FifoDiskQueue._loadinfo   sh    >>#??S#X

83E3E3G(HID  '!A	D r   c                j    U R                  5       R                  [        R                  " U5      5        g r   )r   
write_textr   dumps)r3   rv   s     r   r   FifoDiskQueue._saveinfo   s     ##DJJt$45r   c                .    [        U R                  S5      $ )N	info.json)r   rr   r8   s    r   r   FifoDiskQueue._infopath   s    DII{++r   c                Z   [        U R                  5      R                  S5       H  nUR                  5         M     [        U R                  S5      R                  5         [	        [
        5         [        U R                  5      R                  5         S S S 5        g ! , (       d  f       g = f)Nzq*r   )r   rr   globr   r   OSErrorrmdir)r3   xs     r   r   FifoDiskQueue._cleanup   sg    dii%%d+AHHJ ,TYY$++-gO!!# s   /$B
B*)rl   rx   rv   rr   ry   N)i )rr   str | os.PathLike[str]rl   rE   r$   rB   r   r   r$   rB   )rb)r   rE   r   zLiteral['rb', 'ab+']r$   r	   r$   zbytes | NonerF   rD   )rl   rE   r$   dict[str, Any])rv   r   r$   rB   )r$   r   )r&   r'   r(   r)   r*   r   r   calcsizer   rM   r   rw   r   r   r   r   ru   r   r   r   r+   r#   r   r   rg   rg   \   sP     L.JI)<,,6,$r   rg   c                  |    \ rS rSrSrSr\R                  " \5      rSS jr	SS jr
SS jrSS jrSS jrSS	 jrS
rg)LifoDiskQueue   zPersistent LIFO queue.ri   c                R   U   [        U5      U l        [        U5      R                  5       (       a  [        U5      R	                  S5      U l        U R
                  R                  U R                  5      n[        R                  " U R                  U5      u  U l        U R
                  R                  S[        R                  5        g [        U5      R	                  S5      U l        U R
                  R                  [        R                   " U R                  S5      5        SU l        g )Nzrb+r   zwb+)rq   rr   r   rs   r   fr   	SIZE_SIZEr   r   SIZE_FORMATr   seekrz   SEEK_ENDr   r   )r3   rr   qsizes      r   rM   LifoDiskQueue.__init__   s    I	:$Z__U+DFFFKK/E!==)9)95ALTYFFKK2;;'$Z__U+DFFFLLT%5%5q9:DIr   c                Z   [        U[        5      (       d!  [        S[        U5      R                   35      eU R
                  R                  U5        [        R                  " U R                  [        U5      5      nU R
                  R                  U5        U =R                  S-  sl        g )Nr   r   )r   r   r   r   r&   r   r   r   r   r   r\   r   )r3   r   ssizes      r   r   LifoDiskQueue.push   st    &%((0f1F1F0GHIIVD,,c&k:U		Q	r   c                d   U R                   (       d  g U R                  R                  U R                  * [        R
                  5        [        R                  " U R                  U R                  R                  5       5      u  nU R                  R                  U* U R                  -
  [        R
                  5        U R                  R                  U5      nU R                  R                  U* [        R                  5        U R                  R                  5         U =R                   S-  sl         U$ )Nr   )r   r   r   r   rz   r   r   r   r   r   r   truncate)r3   r   r   s      r   r   LifoDiskQueue.pop   s    yyT^^OR[[1-- 0 0$&&++-@TEDNN*BKK8vv{{4 TE2;;'		Q	r   c                   U R                   (       d  g U R                  R                  U R                  * [        R
                  5        [        R                  " U R                  U R                  R                  5       5      u  nU R                  R                  U* U R                  -
  [        R
                  5        U R                  R                  U5      $ r   )
r   r   r   r   rz   r   r   r   r   r   r3   r   s     r   r   LifoDiskQueue.peek   s~    yyT^^OR[[1-- 0 0$&&++-@TEDNN*BKK8vv{{4  r   c                   U R                   (       a_  U R                  R                  S5        U R                  R                  [        R
                  " U R                  U R                   5      5        U R                  R                  5         U R                   (       d$  [        U R                  5      R                  5         g g rV   )r   r   r   r   r   r   r   r   r   rr   r   r8   s    r   r   LifoDiskQueue.close   sj    99FFKKNFFLLT%5%5tyyAByyO""$ r   c                    U R                   $ r   )r   r8   s    r   r   LifoDiskQueue.__len__   s    yyr   )r   rr   r   Nrr   r   r$   rB   r   r   rF   rD   )r&   r'   r(   r)   r*   r   r   r   r   rM   r   r   r   r   r   r+   r#   r   r   r   r      s6     K,I
!%r   r   c                  d    \ rS rSrSrSrS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S jrSrg)FifoSQLiteQueuei  zRCREATE TABLE IF NOT EXISTS queue (id INTEGER PRIMARY KEY AUTOINCREMENT, item BLOB)zSELECT COUNT(*) FROM queuez#INSERT INTO queue (item) VALUES (?)z.SELECT id, item FROM queue ORDER BY id LIMIT 1zDELETE FROM queue WHERE id = ?c                4   [        U5      R                  5       U l        [        R                  " U R                  SS9U l        [        U R
                  l        U R
                   nUR                  U R                  5        S S S 5        g ! , (       d  f       g = f)NrJ   )timeout)
r   resolve_pathsqlite3
Connection_dbr   text_factoryexecute_sql_create)r3   rr   conns      r   rM   FifoSQLiteQueue.__init__	  s_    $Z'')
%%djj"= %XXLL))* XXs   $B		
Bc                    [        U[        5      (       d!  [        S[        U5      R                   35      eU R
                   nUR                  U R                  U45        S S S 5        g ! , (       d  f       g = f)Nr   )r   r   r   r   r&   r   r   	_sql_push)r3   itemr   s      r   r   FifoSQLiteQueue.push  sT    $&&0d1D1D0EFGGXXLL$1 XXs   A**
A8c                   U R                    nUR                  U R                  5       H;  u  p#UR                  U R                  U45        [	        [
        U5      s  sS S S 5        $    S S S 5        g ! , (       d  f       g = fr   )r   r   _sql_pop_sql_delr   r   )r3   r   id_r   s       r   r   FifoSQLiteQueue.pop  sa    XX!\\$--8	T]]SF3E4(( X8  	 X s   AA1&A11
A?c                    U R                    nUR                  U R                  5       H  u  p#[        [        U5      s  sS S S 5        $    S S S 5        g ! , (       d  f       g = fr   )r   r   r   r   r   )r3   r   r   r   s       r   r   FifoSQLiteQueue.peek  sM    XX<<6E4(( X6   X s   2A	A
A"c                    [        U 5      nU R                  R                  5         U(       d  U R                  R	                  5         g g r   )r\   r   r   r   r   r   s     r   r   FifoSQLiteQueue.close#  s1    4yJJ r   c           	         U R                    n[        [        [        UR	                  U R
                  5      5      S   5      sS S S 5        $ ! , (       d  f       g = frV   )r   r   rE   nextr   	_sql_size)r3   r   s     r   r   FifoSQLiteQueue.__len__)  s6    XXT$,,t~~">?BC XXs   5A
A)r   r   Nr   )r   r   r$   rB   r   rF   rD   )r&   r'   r(   r)   r   r   r   r   r   rM   r   r   r   r   r   r+   r#   r   r   r   r     s:    fK,I5I?H/H+2 Dr   r   c                      \ rS rSrSrSrg)LifoSQLiteQueuei.  z3SELECT id, item FROM queue ORDER BY id DESC LIMIT 1r#   N)r&   r'   r(   r)   r   r+   r#   r   r   r   r   .  s    DHr   r   )
__future__r   r   rz   r   r   abcr   collectionsr   
contextlibr   pathlibr   typingr   r	   r
   r   r   r   r-   rI   r_   rg   r   r   r   r#   r   r   <module>r     s    "  	       / /
T 
2. * ,.o .h$ h$V8 8v)D )DXEo Er   