
    !h 
                        S r SSKJr  SSKrSSKJrJr  SSKJr  \(       a$  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  SSKJr  \R*                  " \5      r " S S\5      r " S S5      rg)zU
HttpError Spider Middleware

See documentation in docs/topics/spider-middleware.rst
    )annotationsN)TYPE_CHECKINGAny)IgnoreRequest)Iterable)Self)Spider)Crawler)Response)BaseSettingsc                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )	HttpError   zA non-200 response was filteredc                2   > Xl         [        TU ]  " U0 UD6  g N)responsesuper__init__)selfr   argskwargs	__class__s       i/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/spidermiddlewares/httperror.pyr   HttpError.__init__    s     $)&)    )r   )r   r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   __static_attributes____classcell__)r   s   @r   r   r      s    )* *r   r   c                  V    \ rS rSr\SS j5       rS	S jrS
S jr        SS jrSr	g)HttpErrorMiddleware%   c                &    U " UR                   5      $ r   )settings)clscrawlers     r   from_crawler HttpErrorMiddleware.from_crawler&   s    7##$$r   c                \    UR                  S5      U l        UR                  S5      U l        g )NHTTPERROR_ALLOW_ALLHTTPERROR_ALLOWED_CODES)getboolhandle_httpstatus_allgetlisthandle_httpstatus_list)r   r'   s     r   r   HttpErrorMiddleware.__init__*   s,    +3+;+;<Q+R"191A1A%2
#r   c                "   SUR                   s=::  a  S:  a   g   UR                  nUR                  SS5      (       a  g SU;   a  US   nO)U R                  (       a  g [	        USU R
                  5      nUR                   U;   a  g [        US5      e)N   i,  r0   Fr2   zIgnoring non-200 response)statusmetagetr0   getattrr2   r   )r   r   spiderr7   allowed_statusess        r   process_spider_input(HttpErrorMiddleware.process_spider_input0   s    (//'C' (}}88+U33#t+#$<=''&0$2M2M  ??.."=>>r   c                L   [        U[        5      (       a  UR                  R                  (       d   eUR                  R                  R	                  S5        UR                  R                  R	                  SUR
                   35        [        R                  SSU0SU0S9  / $ g )Nz httperror/response_ignored_countz(httperror/response_ignored_status_count/zNIgnoring response %(response)r: HTTP status code is not handled or not allowedr   r:   )extra)
isinstancer   r)   stats	inc_valuer6   loggerinfo)r   r   	exceptionr:   s       r   process_spider_exception,HttpErrorMiddleware.process_spider_exceptionB   s     i++>>''''NN  **+MNNN  **:8??:KL KK`X&(  
 Ir   )r0   r2   N)r)   r
   returnr   )r'   r   )r   r   r:   r	   rH   None)r   r   rE   	Exceptionr:   r	   rH   zIterable[Any] | None)
r   r   r   r   classmethodr*   r   r<   rF   r!    r   r   r$   r$   %   sC    % %
?$ -6@F	r   r$   )r    
__future__r   loggingtypingr   r   scrapy.exceptionsr   collections.abcr   typing_extensionsr   scrapyr	   scrapy.crawlerr
   scrapy.httpr   scrapy.settingsr   	getLoggerr   rC   r   r$   rL   r   r   <module>rX      sW    #  % +( '&$, 
		8	$* *, ,r   