
    !h                    N   S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJ	r	J
r
JrJr  S SKJrJr  S SKJrJr  S SKJrJr  \	(       a4  S SKJr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"  S SK#J$r$J%r%  \" S5      r&\RN                  " \(5      r)\" S5      r*\" S5      r+ " S S5      r,g)    )annotationsN)defaultdictdeque)TYPE_CHECKINGAnyTypeVarcast)NotConfiguredScrapyDeprecationWarning)process_chainprocess_parallel)build_from_crawlerload_object)CallableIterable)Deferred)Concatenate	ParamSpecSelf)Spider)Crawler)BaseSettingsSettings_P_T_T2c                      \ rS rSrSrSrSS jr\SS j5       r\	SS j5       r
\SSS jj5       r\SS	 j5       r\SSS
 jj5       rSS jr        SS jrSS jrSS jrSS jrSrg)MiddlewareManager#   z/Base class for implementing middleware managerszfoo middlewarec                l    Xl         [        [        5      U l        U H  nU R	                  U5        M     g N)middlewaresr   r   methods_add_middleware)selfr"   mws      X/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/middleware.py__init__MiddlewareManager.__init__(   s3    &  	 B  $     c                    [         er!   )NotImplementedError)clssettingss     r'   _get_mwlist_from_settings+MiddlewareManager._get_mwlist_from_settings2   s    !!r*   c                    [        U S5      (       a  U R                  U5      nSnO	U " 5       nSnUc  [        U R                   SU S35      e[	        [
        U5      $ )Nfrom_settings__new__.z returned None)hasattrr2   	TypeError__qualname__r	   r   )objclsr.   instancemethod_names       r'   _build_from_settings&MiddlewareManager._build_from_settings6   sb    6?++++H5H)KxH#Kv2231[MPQQB!!r*   Nc                r    [         R                  " U R                   S3[        SS9  U R	                  X5      $ )Nz;.from_settings() is deprecated, use from_crawler() instead.   )category
stacklevel)warningswarn__name__r   _from_settings)r-   r.   crawlers      r'   r2   MiddlewareManager.from_settingsB   s6    ||nWX-	

 !!(44r*   c                :    U R                  UR                  U5      $ r!   )rD   r.   )r-   rE   s     r'   from_crawlerMiddlewareManager.from_crawlerK   s    !!'"2"2G<<r*   c                   U R                  U5      n/ n/ nU HU  n [        U5      nUb  [        Xr5      nO[        R	                  Xq5      nUR                  U5        UR                  U5        MW     [        R                  SU R                  [        R                  " U5      S.SU0S9  U " U6 $ ! [         aH  n	U	R                  (       a,  [        R                  SXiR                  S   S.SU0S9   S n	A	M   S n	A	M  S n	A	ff = f)NzDisabled %(clspath)s: %(eargs)sr   )clspatheargsrE   )extraz+Enabled %(componentname)ss:
%(enabledlist)s)componentnameenabledlist)r/   r   r   r   r;   appendr
   argsloggerwarninginfocomponent_namepprintpformat)
r-   r.   rE   mwlistr"   enabledrK   mwclsr&   es
             r'   rD    MiddlewareManager._from_settingsO   s    ..x8G#G,&+E;B*??PB""2&w' " 	:!$!3!3%~~g6 g& 	 	
 K  ! ! 66NN9$+ffQi@('2 #  s   AB..
D 87C;;D c                    [        US5      (       a(  U R                  S   R                  UR                  5        [        US5      (       a)  U R                  S   R	                  UR
                  5        g g )Nopen_spiderclose_spider)r5   r#   rP   r^   
appendleftr_   )r%   r&   s     r'   r$   !MiddlewareManager._add_middlewareo   sW    2}%%LL'..r~~>2~&&LL(33BOOD 'r*   c                L    [        SU R                  U   5      n[        XB/UQ76 $ )Nz,Iterable[Callable[Concatenate[_T, _P], _T2]])r	   r#   r   r%   
methodnameobjrQ   r#   s        r'   _process_parallel#MiddlewareManager._process_parallelu   s.     :DLL<T
  4t44r*   c                L    [        SU R                  U   5      n[        XB/UQ76 $ )Nz+Iterable[Callable[Concatenate[_T, _P], _T]])r	   r#   r   rc   s        r'   _process_chain MiddlewareManager._process_chain}   s,    94<<
;S
 W1D11r*   c                &    U R                  SU5      $ )Nr^   rf   r%   spiders     r'   r^   MiddlewareManager.open_spider   s    %%mV<<r*   c                &    U R                  SU5      $ )Nr_   rl   rm   s     r'   r_   MiddlewareManager.close_spider   s    %%nf==r*   )r#   r"   )r"   r   returnNone)r.   r   rr   z	list[Any])r8   ztype[_T]r.   r   rr   r   r!   )r.   r   rE   zCrawler | Nonerr   r   )rE   r   rr   r   )r&   r   rr   rs   )rd   strre   r   rQ   r   rr   zDeferred[list[_T2]])rd   rt   re   r   rQ   r   rr   zDeferred[_T])rn   r   rr   zDeferred[list[None]])rC   
__module__r7   __firstlineno____doc__rU   r(   classmethodr/   staticmethodr;   r2   rH   rD   r$   rf   ri   r^   r_   __static_attributes__ r*   r'   r   r   #   s    9%N% " " 	" 	" 5 5 = = ! !>E55$&5/25	52=>r*   r   )-
__future__r   loggingrV   rA   collectionsr   r   typingr   r   r   r	   scrapy.exceptionsr
   r   scrapy.utils.deferr   r   scrapy.utils.miscr   r   collections.abcr   r   twisted.internet.deferr   typing_extensionsr   r   r   scrapyr   scrapy.crawlerr   scrapy.settingsr   r   r   	getLoggerrC   rR   r   r   r   r{   r*   r'   <module>r      sv    "    * 4 4 E > =2/ ?>&6	4B 
		8	$T]end> d>r*   