
    !hE                       S SK Jr  S SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJr  S SKJrJr  S S	KJr  S S
KJr  \(       a  S SKJrJr  \R:                  " \5      rSS jr   S         SS jjr! " S S5      r"    S           SS jjr#\SS j5       r$\SS j5       r$\SS j5       r$SSS jjr$g)    )annotationsN)StringIO)TYPE_CHECKINGAnyLiteralcastoverload)warn)etree)ScrapyDeprecationWarning)ResponseTextResponse)Selector)
re_rsearch)CallableIteratorc              #    #    [        S[        SS9  [        R                  " U5      n[        R                  " S[        R
                  5      n[        R                  " SU S3[        R
                  5      n[        R                  " S[        R
                  5      n[        R                  " S[        R
                  5      n[        U 5      n[        R                  " X75      nU(       a  UR                  5       R                  5       OS	n	[        XG5      n
U
(       a  XzS
   S R                  5       OS	n0 nU(       a  [        [        R                  " X[5      5       Hz  nU
(       d   e[        R                  " SU S3USU
S
    [        R
                  5      nU(       d  ME  [        R                  " XnR                  5       5       H  nUS   XS
   '   M     M|     [        R                  " SU SU S3[        R
                  5      nUR                  U5       HW  nU	UR                  5       R                  X SSR                  UR!                  5       5       3S
5      -   U-   n[#        USS9v   MY     g7f)zReturn a iterator of Selector's over all nodes of a XML document,
   given the name of the node to iterate. Useful for parsing XML feeds.

obj can be:
- a Response object
- a unicode string
- a string encoded as utf-8
zxmliter is deprecated and its use strongly discouraged because it is vulnerable to ReDoS attacks. Use xmliter_lxml instead. See https://github.com/scrapy/scrapy/security/advisories/GHSA-cc65-xxvf-f7r9   )
stacklevelz<\?xml[^>]+>\s*z<\s*/z\s*>z<\s*/([^\s>]+)\s*>z((xmlns[:A-Za-z]*)=[^>\s]+)    Nz<\s*z.*?xmlns[:=][^>]*>r   <z
[\s>].*?</> xmltexttype)r
   r   reescapecompileDOTALL_body_or_strsearchgroupstripr   reversedfindallfinditerreplacejoinvaluesr   )objnodenamenodename_pattDOCUMENT_HEADER_REHEADER_END_RE
END_TAG_RENAMESPACE_REr   document_header_matchdocument_headerheader_end_idx
header_end
namespacestagnametagxrmatchnodetexts                      ]/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/utils/iterators.pyxmliterr@      s     	W 	! IIh'M$6		BJJ%d;RYYGM1299=J::<biiHLDII&8?1F##%++-B   4N6DQ')*002"J!#J

: BCG!!>))y 23(~a()		C
 sL))+>A'(tJt$ ? D 	

ajqA299MAD!kkm##Ja1B1B1D(E'FG 	 	 H511 "s   FI0CI0c              #    #    [        U 5      nU(       a  SU SU 3OUn[        R                  " UUR                  SSSS9nSU(       a  U SU 3OU-   nU(       + =(       a    SU;   nU(       a  UR	                  SS	S
9u  p1U H  u  pU	S:X  a?  [        U
[        5      (       d   eU(       a  U
u  pX:w  a  M4  UnSnSU SU 3nSU SU 3nMJ  [        U
[        R                  5      (       d   eU
nUR                  U:w  a  M  [        R                  " USS9nUR                  5         [        USS9nU(       a  UR                  X25        UR                  U5      S   v   M     g 7f)N{})endstart-nsFT)encodingeventsresolve_entities	huge_treez//:r   )maxsplitrE   unicode)rF   r   r   r   )_StreamReaderr   	iterparserF   split
isinstancetuple_Elementr:   tostringclearr   register_namespacexpath)r-   r.   	namespaceprefixreaderr:   iterableselxpathneeds_namespace_resolutioneventdata_prefix
_namespacenoder>   xss                   r?   xmliter_lxmlrc   Q   sm     3F*3BykH:
&C"H &8*-IH%.!B3(?!#>>#>:JdE****)&*#$&	-2*xq
39+Rz2$////88s?>>$;

8%0!!&4hhx ##+  s   E!E#c                  H    \ rS rSrSS jrS	S
S jjrS	S
S jjrS	S
S jjrSrg)rM   |   c                P   SU l         U   [        U[        5      (       a$  UR                  UR                  sU l        U l        O>[        U[        5      (       a  UR                  SsU l        U l        OUSsU l        U l        [        U R
                  [        5      U l        SU l	        g )Nr   utf-8T)
_ptrrP   r   bodyrF   _textr   str_is_unicode_is_first_read)selfr-   s     r?   __init___StreamReader.__init__}   s}    	c<(((+#,,%DJX&&(+'%DJ(+W%DJ!+DJJ!<$(    c                    U R                   (       a  U R                  OU R                  nU" U5      nU R                  (       a  SU l        UR	                  5       nU$ )NF)rl   _read_unicode_read_stringrm   lstrip)rn   nmethodresults       r?   read_StreamReader.read   sL    "&"2"2D8I8I 	 "'D]]_Frq   c                z    U R                   U R                   U-   p2X0l         [        [        U R                  5      X# $ N)rh   r   bytesrj   rn   rv   ses       r?   rt   _StreamReader._read_string   s0    yy$))a-1	E4::&q++rq   c                    U R                   U R                   U-   p2X0l         [        [        U R                  5      X# R	                  S5      $ )Nrg   )rh   r   rk   rj   encoder~   s       r?   rs   _StreamReader._read_unicode   s;    yy$))a-1	C$Q)0099rq   )rm   rl   rh   rj   rF   N)r-   Response | str | bytes)i  )rv   intreturnr}   )	__name__
__module____qualname____firstlineno__ro   ry   rt   rs   __static_attributes__ rq   r?   rM   rM   |   s    
),
: :rq   rM   c           	   #    #    Ub  [        S[        SS9  [        [        U SS95      n0 nU(       a  XS'   U(       a  XFS'   [        R
                  " U40 UD6nU(       d   [        U5      nU Hi  n[        U5      [        U5      :w  a8  [        R                  S	UR                  [        U5      [        U5      S
.5        MS  [        [        X(5      5      v   Mk     g! [         a     gf = f7f)a  Returns an iterator of dictionaries from the given csv object

obj can be:
- a Response object
- a unicode string
- a string encoded as utf-8

delimiter is the character used to separate fields on the given obj.

headers is an iterable that when provided offers the keys
for the returned dictionaries, if not the first row is used.

quotechar is the character used to enclosure fields on the given obj.
Nz]The encoding argument of csviter() is ignored and will be removed in a future Scrapy version.r   )categoryr   T)rL   	delimiter	quotecharzGignoring row %(csvlnum)d (length: %(csvrow)d, should be: %(csvheader)d))csvlnumcsvrow	csvheader)r
   r   r   r#   csvrY   nextStopIterationlenloggerwarningline_numdictzip)	r-   r   headersrF   r   lineskwargscsv_rrows	            r?   csviterr      s     , +-		
 \#t45EF'{'{JJu''E	5kG s8s7|#NN,  %~~!#h!$W 3w$%%   		s+   AC*C *A0C*
C'$C*&C''C*c                    g r|   r   )r-   s    r?   r#   r#      s    69rq   c                    g r|   r   r-   rL   s     r?   r#   r#      s    NQrq   c                    g r|   r   r   s     r?   r#   r#      s    QTrq   c           
        [         [        [        4n[        X5      (       d@  SR	                  S U 5       5      n[        SU < SU S[        U 5      R                   35      e[        U [         5      (       aO  U(       d  U R                  $ [        U [        5      (       a  U R                  $ U R                  R                  S5      $ [        U [        5      (       a  U(       a  U $ U R                  S5      $ U(       a  U R                  S5      $ U $ )Nz or c              3  8   #    U  H  oR                   v   M     g 7fr|   )r   ).0ts     r?   	<genexpr>_body_or_str.<locals>.<genexpr>   s     (L^^s   zObject z	 must be z, not rg   )r   rk   r}   rP   r+   	TypeErrorr   r   ri   r   r   decoder   )r-   rL   expected_typesexpected_types_strs       r?   r#   r#      s    U+Nc**#[[(L^(LLcWI&8%9S	@R@R?ST
 	
 #x  88Oc<((88Oxxw''#ss63::g#66")3::g2s2rq   )r-   r   r.   rk   r   Iterator[Selector])Nr;   )
r-   r   r.   rk   rW   
str | NonerX   rk   r   r   )NNNN)r-   r   r   r   r   zlist[str] | NonerF   r   r   r   r   zIterator[dict[str, str]])r-   r   r   rk   )r-   r   rL   zLiteral[True]r   rk   )r-   r   rL   zLiteral[False]r   r}   )T)r-   r   rL   boolr   zstr | bytes)%
__future__r   r   loggingr   ior   typingr   r   r   r   r	   warningsr
   lxmlr   scrapy.exceptionsr   scrapy.httpr   r   scrapy.selectorr   scrapy.utils.pythonr   collections.abcr   r   	getLoggerr   r   r@   rc   rM   r   r#   r   rq   r?   <module>r      s   " 
  	  > >   6 . $ *2			8	$72z !	($	($($ ($ 	($
 ($V: :H ! $ 9&	9&9& 9& 	9&
 9& 9&x 
 9 
 9 
 Q 
 Q 
 T 
 T3rq   