
    3 d                        d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ d	 Zd
 Zd Zd Zd Z e ee
j                  eej                  Z e ee
j                  eej                  Z e ee
j                  ej        ej                  Z e ee
j                  ej        ej                  Z ee          Z ee          Z ee          Z ee          Z ee
j                   Z  ee
j!                  Z!dZ"dZ# edee"e#          Z$ edee"e#          Z% edee"e#          Z& edee"e#          Z'dS )z
Scheduler queues
    N)PathLike)Path)Union)queue)create_deprecated_class)request_from_dictc                 "     G d d|           }|S )Nc                   4     e Zd Zdeeef         f fdZ xZS )'_with_mkdir.<locals>.DirectoriesCreatedpathc                     t          |          j        }|                                s|                    dd            t	                      j        |g|R i | d S )NT)parentsexist_ok)r   parentexistsmkdirsuper__init__)selfr   argskwargsdirname	__class__s        .lib/python3.11/site-packages/scrapy/squeues.pyr   z0_with_mkdir.<locals>.DirectoriesCreated.__init__   sf    4jj'G>>## ;dT:::EGGT3D333F33333    )__name__
__module____qualname__r   strr   r   __classcell__r   s   @r   DirectoriesCreatedr      sM        	4sH}!5 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4r   r"    )queue_classr"   s     r   _with_mkdirr%      s4    4 4 4 4 4[ 4 4 4 r   c                 ,     G fdd|           }|S )Nc                   :     e Zd Z fdZ fdZ fdZ xZS )._serializable_queue.<locals>.SerializableQueuec                 `     |          }t                                          |           d S N)r   push)r   objsr   	serializes      r   r+   z3_serializable_queue.<locals>.SerializableQueue.push   s'    	#AGGLLOOOOOr   c                 b    t                                                      }|r |          S d S r*   )r   pop)r   r-   r   deserializes     r   r0   z2_serializable_queue.<locals>.SerializableQueue.pop"   s4    A &"{1~~%& &r   c                     	 t                                                      }n"# t          $ r}t          d          |d}~ww xY w|r |          S dS   Returns the next object to be returned by :meth:`pop`,
            but without removing it from the queue.

            Raises :exc:`NotImplementedError` if the underlying queue class does
            not implement a ``peek`` method, which is optional for queues.
            z4The underlying queue class does not implement 'peek'Nr   peekAttributeErrorNotImplementedError)r   r-   exr   r1   s      r   r6   z3_serializable_queue.<locals>.SerializableQueue.peek'   st    GGLLNN!   )J   &"{1~~%& &    $ 
A>A)r   r   r   r+   r0   r6   r    )r   r1   r.   s   @r   SerializableQueuer(      sz        	 	 	 	 	 		& 	& 	& 	& 	& 	&
	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r   r;   r#   )r$   r.   r1   r;   s    `` r   _serializable_queuer<      sE    & & & & & & & &K & & &4 r   c                 "     G d d|           }|S )Nc                   R     e Zd Z fdZed             Z fdZ fdZ fdZ xZ	S )7_scrapy_serialization_queue.<locals>.ScrapyRequestQueuec                 b    |j         | _         t                                          |           d S r*   )spiderr   r   )r   crawlerkeyr   s      r   r   z@_scrapy_serialization_queue.<locals>.ScrapyRequestQueue.__init__<   s*    !.DKGGS!!!!!r   c                      | ||          S r*   r#   )clsrB   rC   r   r   s        r   from_crawlerzD_scrapy_serialization_queue.<locals>.ScrapyRequestQueue.from_crawler@   s    3w$$$r   c                 |    |                     | j                  }t                                          |          S NrA   )to_dictrA   r   r+   r   requestr   s     r   r+   z<_scrapy_serialization_queue.<locals>.ScrapyRequestQueue.pushD   s.    ooT[o99G77<<(((r   c                 x    t                                                      }|sd S t          || j                  S rH   )r   r0   r   rA   rK   s     r   r0   z;_scrapy_serialization_queue.<locals>.ScrapyRequestQueue.popH   s6    ggkkmmG t$WT[AAAAr   c                 x    t                                                      }|sdS t          || j                  S )r4   NrI   )r   r6   r   rA   rK   s     r   r6   z<_scrapy_serialization_queue.<locals>.ScrapyRequestQueue.peekN   s8     ggllnnG t$WT[AAAAr   )
r   r   r   r   classmethodrF   r+   r0   r6   r    r!   s   @r   ScrapyRequestQueuer?   ;   s        	" 	" 	" 	" 	" 
	% 	% 
	%	) 	) 	) 	) 	)	B 	B 	B 	B 	B
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	Br   rP   r#   r$   rP   s     r   _scrapy_serialization_queuerR   :   s<    B B B B B[ B B B> r   c                 "     G d d|           }|S )Nc                   4     e Zd Zed             Z fdZ xZS );_scrapy_non_serialization_queue.<locals>.ScrapyRequestQueuec                      |             S r*   r#   )rE   rB   r   r   s       r   rF   zH_scrapy_non_serialization_queue.<locals>.ScrapyRequestQueue.from_crawler_   s    355Lr   c                     	 t                                                      }n"# t          $ r}t          d          |d}~ww xY w|S r3   r5   )r   r-   r9   r   s      r   r6   z@_scrapy_non_serialization_queue.<locals>.ScrapyRequestQueue.peekc   sY    GGLLNN!   )J  Hr:   )r   r   r   rO   rF   r6   r    r!   s   @r   rP   rU   ^   sQ        		 	 
		 	 	 	 	 	 	 	 	r   rP   r#   rQ   s     r   _scrapy_non_serialization_queuerX   ]   s4        [   ( r   c                     	 t          j        | d          S # t           j        t          t          f$ r"}t          t          |                    |d }~ww xY w)N   )protocol)pickledumpsPicklingErrorr7   	TypeError
ValueErrorr   )r,   es     r   _pickle_serializerb   u   s]    (|C!,,,,  .)< ( ( (Q  a'(s    AAAz*{cls} inherits from deprecated class {old}z{cls} is deprecatedPickleFifoDiskQueueNonRequest)name	new_classsubclass_warn_messageinstance_warn_messagePickleLifoDiskQueueNonRequestMarshalFifoDiskQueueNonRequestMarshalLifoDiskQueueNonRequest)(__doc__marshalr\   osr   pathlibr   typingr   queuelibr   scrapy.utils.deprecater   scrapy.utils.requestr   r%   r<   rR   rX   rb   FifoDiskQueueloads!_PickleFifoSerializationDiskQueueLifoDiskQueue!_PickleLifoSerializationDiskQueuer]   "_MarshalFifoSerializationDiskQueue"_MarshalLifoSerializationDiskQueuePickleFifoDiskQueuePickleLifoDiskQueueMarshalFifoDiskQueueMarshalLifoDiskQueueFifoMemoryQueueLifoMemoryQueue_subclass_warn_message_instance_warn_messagerc   rh   ri   rj   r#   r   r   <module>r      s                              : : : : : : 2 2 2 2 2 2    <     F  0( ( ( %8$7K#$$&7% % ! %8$7K#$$&7% % ! &9%8K#$$gmW]& & " &9%8K#$$gmW]& & "
 212STT 112STT 223UVV 223UVV 11%2GHH11%2GHH F .  7 7	(/00	! ! !  !8 7	(/00	! ! !  "9!8	)000	" " "  "9!8	)000	" " "   r   