
    hB                       S SK Jr  S SKrS SKJrJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJrJr  S S	KJrJrJrJrJrJrJr  S S
KJrJrJrJ r J!r!  / SQ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) " S S\(\#5      r* " S S\5      r+g)    )annotationsN)ABCMetaabstractmethod)deque)IterableIteratorKeysViewMutableMappingMappingProxyType)Any)_scrapy_item_classesattr)_json_schema_from_attrs_json_schema_from_dataclass_json_schema_from_item_class_json_schema_from_pydantic_JsonSchemaState/_setdefault_attribute_docstrings_on_json_schema*_setdefault_attribute_types_on_json_schema)_get_pydantic_model_metadata_get_pydantic_v1_model_metadata_is_attrs_class_is_pydantic_model_is_pydantic_v1_model)AdapterInterfaceAttrsAdapterDataclassAdapterDictAdapterItemAdapterPydanticAdapterScrapyItemAdapterc                      \ rS rSrSrSS jr\\SS j5       5       r\SS j5       r	\SS j5       r
\SS j5       r\SS	.     SS
 jj5       rSS jrSS jrSrg)r   '   zAbstract Base Class for adapters.

An adapter that handles a specific type of item should inherit from this
class and implement the abstract methods defined here, plus the
abtract methods inherited from the MutableMapping base class.
c                    Xl         g Nitem)selfr(   s     Z/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/itemadapter/adapter.py__init__AdapterInterface.__init__/   s    	    c                    [         e)zLReturn True if the adapter can handle the given item class, False otherwise.)NotImplementedErrorcls
item_classs     r*   is_item_classAdapterInterface.is_item_class2   s
     "!r-   c                8    U R                  UR                  5      $ )zFReturn True if the adapter can handle the given item, False otherwise.)r3   	__class__r1   r(   s     r*   is_itemAdapterInterface.is_item8   s       00r-   c                    [        0 5      $ r&   r   r1   r2   
field_names      r*   get_field_meta_from_class*AdapterInterface.get_field_meta_from_class=   s    ##r-   c                    g)zhReturn a list of fields defined for ``item_class``.
If a class doesn't support fields, None is returned.N r0   s     r*   get_field_names_from_class+AdapterInterface.get_field_names_from_classA   s     r-   N_statec                   [        XU5      $ r&   )r   r1   r2   rD   s      r*   get_json_schema AdapterInterface.get_json_schemaG   s     ,CVDDr-   c                N    U R                  U R                  R                  U5      $ )z7Return metadata for the given field name, if available.)r=   r(   r6   r)   r<   s     r*   get_field_metaAdapterInterface.get_field_metaM   s    --dii.A.A:NNr-   c                "    U R                  5       $ )z0Return a dynamic view of the item's field names.)keysr)   s    r*   field_namesAdapterInterface.field_namesQ   s    yy{r-   r'   r(   r   returnNoner2   typerS   boolr(   r   rS   rW   r2   rV   r<   strrS   r   r2   rV   rS   zlist[str] | Noner2   rV   rD   z_JsonSchemaState | NonerS   zdict[str, Any]r<   rZ   rS   r   rS   r	   )__name__
__module____qualname____firstlineno____doc__r+   classmethodr   r3   r8   r=   rA   rG   rK   rP   __static_attributes__r@   r-   r*   r   r   '   s     "  " 1 1 $ $  
 DHEE*AE	E E
Or-   r   )	metaclassc                  p    \ rS rSr% S\S'   S\S'   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)_MixinAttrsDataclassAdapterV   dict_fields_dictr   r(   c                4    U R                   U   R                  $ r&   )rk   metadatarJ   s     r*   rK   *_MixinAttrsDataclassAdapter.get_field_metaZ   s      ,555r-   c                ,    [        U R                  5      $ r&   )r	   rk   rO   s    r*   rP   '_MixinAttrsDataclassAdapter.field_names]   s    ))**r-   c                b    XR                   ;   a  [        U R                  U5      $ [        U5      er&   )rk   getattrr(   KeyErrorrJ   s     r*   __getitem__'_MixinAttrsDataclassAdapter.__getitem__`   s*    ***499j11z""r-   c                    XR                   ;   a  [        U R                  X5        g [        U R                  R                  R
                   SU 35      eN does not support field: )rk   setattrr(   rs   r6   r_   r)   r<   values      r*   __setitem__'_MixinAttrsDataclassAdapter.__setitem__e   sF    ***DIIz1dii11::;;TU_T`abbr-   c                *   XR                   ;   a9   [        U R                  U5      (       a  [        U R                  U5        g [        e[        U R                  R                  R                   SU 35      e! [         a  n[        U5      UeS nAff = frw   )rk   hasattrr(   delattrAttributeErrorrs   r6   r_   )r)   r<   exs      r*   __delitem__'_MixinAttrsDataclassAdapter.__delitem__k   s    ***3499j11DIIz2(( dii11::;;TU_T`abb " 3z*23s   1A7 A7 7
BBBc                B   ^  [        U 4S jT R                   5       5      $ )Nc              3  b   >#    U  H$  n[        TR                  U5      (       d  M   Uv   M&     g 7fr&   r   r(   .0r   r)   s     r*   	<genexpr>7_MixinAttrsDataclassAdapter.__iter__.<locals>.<genexpr>x   s"     S%6T'$))T:RDD%6   /	/)iterrk   rO   s   `r*   __iter__$_MixinAttrsDataclassAdapter.__iter__w   s    ST%6%6SSSr-   c                <    [        [        [        U 5      5      5      $ r&   lenlistr   rO   s    r*   __len__#_MixinAttrsDataclassAdapter.__len__z       4T
#$$r-   r@   Nr]   r^   r<   rZ   rS   r   r<   rZ   r{   r   rS   rT   r<   rZ   rS   rT   rS   r   rS   int)r_   r`   ra   rb   __annotations__rK   rP   rt   r|   r   r   r   re   r@   r-   r*   rh   rh   V   s3    
I6+#
c
cT%r-   rh   c                     ^  \ rS rSrSU 4S jjr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS.     SS	 jj5       r
S
rU =r$ )r   ~   c                   > [         TU ]  U5        [        c  [        S5      e[        R                  " U R
                  R                  5      U l        g Nattr module is not available)superr+   r   RuntimeErrorfields_dictr(   r6   rk   )r)   r(   r6   s     r*   r+   AttrsAdapter.__init__   s>    <=>> ,,TYY-@-@Ar-   c                P    [        U5      =(       a    [        U[        5      (       + $ r&   )r   
isinstancerV   r7   s     r*   r8   AttrsAdapter.is_item   s    t$CZd-C)CCr-   c                    [        U5      $ r&   )r   r0   s     r*   r3   AttrsAdapter.is_item_class   s    z**r-   c                    [         c  [        S5      e [         R                  " U5      U   R                  $ ! [         a   n[	        UR
                   SU 35      UeS nAff = f)Nr   rx   )r   r   r   rm   rs   r_   r1   r2   r<   r   s       r*   r=   &AttrsAdapter.get_field_meta_from_class   sh    <=>>	b##J/
;DDD 	bj1122KJ<XY_aa	bs   "7 
A!AA!c                    [         c  [        S5      e[         R                  " U5       Vs/ s H  o"R                  PM     sn$ s  snf r   )r   r   fieldsnamer1   r2   as      r*   rA   'AttrsAdapter.get_field_names_from_class   s8    <=>> $J 78 71 7888s   ANrC   c               >    U=(       d
    [        X1S9n[        X5      $ Nadapter
containers)r   r   rF   s      r*   rG   AttrsAdapter.get_json_schema   s!     Q+CLQ&z::r-   rk   rR   rX   rU   rY   r[   r\   r_   r`   ra   rb   r+   rd   r8   r3   r=   rA   rG   re   __classcell__r6   s   @r*   r   r   ~   s    B D D + + b b 9 9
 DH;;*A;	; ;r-   r   c                     ^  \ rS rSrSU 4S jjr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS.     SS	 jj5       r
S
rU =r$ )r      c                   > [         TU ]  U5        [        R                  " U R                  5       Vs0 s H  o"R
                  U_M     snU l        g s  snf r&   )r   r+   dataclassesr   r(   r   rk   )r)   r(   fieldr6   s      r*   r+   DataclassAdapter.__init__   sB    <G<N<Ntyy<YZ<Y5ZZ.<YZZs   Ac                f    [         R                  " U5      =(       a    [        U[        5      (       + $ r&   )r   is_dataclassr   rV   r7   s     r*   r8   DataclassAdapter.is_item   s"    ''-Ljt6L2LLr-   c                .    [         R                  " U5      $ r&   )r   r   r0   s     r*   r3   DataclassAdapter.is_item_class   s    ''
33r-   c                    [         R                  " U5       H!  nUR                  U:X  d  M  UR                  s  $    [	        UR
                   SU 35      erw   )r   r   r   rm   rs   r_   )r1   r2   r<   r   s       r*   r=   *DataclassAdapter.get_field_meta_from_class   sM     ''
3EzzZ'~~% 4 *--..G
|TUUr-   c                l    [         R                  " U5       Vs/ s H  o"R                  PM     sn$ s  snf r&   )r   r   r   r   s      r*   rA   +DataclassAdapter.get_field_names_from_class   s)     + 2 2: >? >1 >???s   1NrC   c               >    U=(       d
    [        X1S9n[        X5      $ r   )r   r   rF   s      r*   rG    DataclassAdapter.get_json_schema   s!     Q+CLQ*:>>r-   r   rR   rX   rU   rY   r[   r\   r   r   s   @r*   r   r      s    [
 M M 4 4 V V @ @ DH??*A?	? ?r-   r   c                      \ rS rSr% S\S'   \SS j5       r\SS j5       r\SS j5       r\S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S jrSrg)r!      r   r(   c                <    [        U5      =(       d    [        U5      $ r&   )r   r   r0   s     r*   r3   PydanticAdapter.is_item_class   s    !*-R1Fz1RRr-   c                      [        X5      $ ! [         a    [        X5      s $ f = f! [         a   n[        UR                   SU 35      UeS nAff = frw   )r   r   r   rs   r_   r   s       r*   r=   )PydanticAdapter.get_field_meta_from_class   sg    	bO3JKK! O6zNNO 	bj1122KJ<XY_aa	bs$   
 &) &) 
AAAc                     [        UR                  R                  5       5      $ ! [         a&    [        UR                  R                  5       5      s $ f = fr&   )r   model_fieldsrN   r   
__fields__r0   s     r*   rA   *PydanticAdapter.get_field_names_from_class   sJ    	6
//44677 	6
--22455	6s   "% -AANrC   c                   [        XU5      $ r&   )r   rF   s      r*   rG   PydanticAdapter.get_json_schema   s     *#6BBr-   c                     [        U R                  R                  R                  5      $ ! [         a"    [        U R                  R
                  5      s $ f = fr&   )r	   r(   r6   r   r   r   rO   s    r*   rP   PydanticAdapter.field_names   sF    	2DII//<<== 	2DII0011	2s   (+ )AAc                P    U R                   R                  R                    XR                   R                  R                  ;   a  [        U R                   U5      $  [        U5      e! [         a4    XR                   R
                  ;   a  [        U R                   U5      s $  NHf = fr&   )r(   r6   r   rr   r   r   rs   rJ   s     r*   rt   PydanticAdapter.__getitem__   s    	6II,,
 YY00===tyy*55 >z""  	6YY111tyy*55 2	6s    A' '9B%$B%c                    U R                   R                  R                    XR                   R                  R                  ;   a  [        U R                   X5        g  [        U R                   R                  R                   SU 35      e! [         a4    XR                   R
                  ;   a  [        U R                   X5         g  Nkf = frw   )r(   r6   r   ry   r   r   rs   r_   rz   s      r*   r|   PydanticAdapter.__setitem__   s    		II,, YY00===		:5 > $))--6677PQ[P\]^^  	YY111		:5 2	s    B 9C	C	c                    U R                   R                  R                    XR                   R                  R                  ;   a9   [        U R                   U5      (       a  [	        U R                   U5        g [
        e [        U R                   R                  R                   SU 35      e! [
         a  n[        U5      UeS nAff = f! [
         a  nXR                   R                  ;   a\   [        U R                   U5      (       a  [	        U R                   U5         S nAg [
        Ue! [
         a  n[        U5      UeS nAff = f S nANS nAff = frw   )	r(   r6   r   r   r   r   rs   r   r_   )r)   r<   r   ex2s       r*   r   PydanticAdapter.__delitem__  s!   	7II,, YY00===7tyy*55		:6(( > $))--6677PQ[P\]^^ & 7":.B67!  	8YY1118tyy*55		:6(b0% 8":.C78 2	8sY    C 1B- 8B- -
C7CC
EE/1D,%D,,
E6EEEEc                   ^   [        U 4S jT R                  R                  R                   5       5      $ ! [         a,    [        U 4S jT R                  R
                   5       5      s $ f = f)Nc              3  b   >#    U  H$  n[        TR                  U5      (       d  M   Uv   M&     g 7fr&   r   r   s     r*   r   +PydanticAdapter.__iter__.<locals>.<genexpr>  s%      !AWTYYX\E]!Ar   c              3  b   >#    U  H$  n[        TR                  U5      (       d  M   Uv   M&     g 7fr&   r   r   s     r*   r   r     s#     Z)=TXAY)=r   )r   r(   r6   r   r   r   rO   s   `r*   r   PydanticAdapter.__iter__  sa    	[ !%!4!4!A!A    	[Z)=)=ZZZ	[s   26 3A,+A,c                <    [        [        [        U 5      5      5      $ r&   r   rO   s    r*   r   PydanticAdapter.__len__!  r   r-   r@   rU   rY   r[   r\   r^   r   r   r   r   r   )r_   r`   ra   rb   r   rd   r3   r=   rA   rG   rP   rt   r|   r   r   r   re   r@   r-   r*   r!   r!      s    
IS S b b 6 6 DHCC*AC	C C
2	#__.[%r-   r!   c                  \    \ rS rSr% S\S'   S\S'   SS jrSS jrSS jrSS	 jrSS
 jr	Sr
g)_MixinDictScrapyItemAdapteri%  rj   rk   r   r(   c                     U R                   U   $ r&   r'   rJ   s     r*   rt   '_MixinDictScrapyItemAdapter.__getitem__)  s    yy$$r-   c                     X R                   U'   g r&   r'   rz   s      r*   r|   '_MixinDictScrapyItemAdapter.__setitem__,  s     %		*r-   c                    U R                   U	 g r&   r'   rJ   s     r*   r   '_MixinDictScrapyItemAdapter.__delitem__/  s    IIj!r-   c                ,    [        U R                  5      $ r&   )r   r(   rO   s    r*   r   $_MixinDictScrapyItemAdapter.__iter__2  s    DIIr-   c                ,    [        U R                  5      $ r&   )r   r(   rO   s    r*   r   #_MixinDictScrapyItemAdapter.__len__5  s    499~r-   r@   Nr   r   r   r   r   )r_   r`   ra   rb   r   rt   r|   r   r   r   re   r@   r-   r*   r   r   %  s&    
I%&"r-   r   c                  l    \ rS rSr\S	S j5       r\S
S j5       r\SS.     SS jj5       rSS jrSr	g)r   i9  c                "    [        U[        5      $ r&   )r   rj   r7   s     r*   r8   DictAdapter.is_item:  s    $%%r-   c                "    [        U[        5      $ r&   )
issubclassrj   r0   s     r*   r3   DictAdapter.is_item_class>  s    *d++r-   NrC   c               
    SS0$ )NrV   objectr@   rF   s      r*   rG   DictAdapter.get_json_schemaB  s     !!r-   c                ,    [        U R                  5      $ r&   )r	   r(   rO   s    r*   rP   DictAdapter.field_namesH  s    		""r-   r@   rX   rU   r\   r^   )
r_   r`   ra   rb   rd   r8   r3   rG   rP   re   r@   r-   r*   r   r   9  s\    & & , , DH""*A"	" "
#r-   r   c                     ^  \ 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.     SU 4S jjj5       r	SS	 jr
S
rU =r$ )r"   iL  c                "    [        U[        5      $ r&   )r   r   r7   s     r*   r8   ScrapyItemAdapter.is_itemM  s    $ 455r-   c                "    [        U[        5      $ r&   )r   r   r0   s     r*   r3   ScrapyItemAdapter.is_item_classQ  s    *&:;;r-   c                2    [        UR                  U   5      $ r&   )r   r   r;   s      r*   r=   +ScrapyItemAdapter.get_field_meta_from_classU  s    
 1 1* =>>r-   c                H    [        UR                  R                  5       5      $ r&   )r   r   rN   r0   s     r*   rA   ,ScrapyItemAdapter.get_field_names_from_classY  s    J%%**,--r-   NrC   c               v   > U=(       d
    [        X1S9n[        TU ]	  XS9n[        X1U5        [	        X15        U$ Nr   rC   )r   r   rG   r   r   )r1   r2   rD   schemar6   s       r*   rG   !ScrapyItemAdapter.get_json_schema]  s@     Q+CLQ((C26vN7Kr-   c                @    [        U R                  R                  5      $ r&   )r	   r(   r   rO   s    r*   rP   ScrapyItemAdapter.field_namesg  s    		(())r-   r@   rX   rU   rY   r[   r\   r^   )r_   r`   ra   rb   rd   r8   r3   r=   rA   rG   rP   re   r   r   s   @r*   r"   r"   L  s    6 6 < < ? ? . . DH*A	 * *r-   r"   c                  T   \ rS rSr% Sr\" \\\\	\
/5      rS\S'   SS jr\SS j5       r\SS j5       r\SS j5       r\SS	 j5       r\SS
 j5       r\SS.     S S jj5       r\S!S j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(S jrS)S jrS*S jr\S+S j5       r Sr!g),r    ik  zWrapper class to interact with data container objects. It provides a common interface
to extract and set data without having to take the object's type into account.
z Iterable[type[AdapterInterface]]ADAPTER_CLASSESc                    U R                    H(  nUR                  U5      (       d  M  U" U5      U l          g    [        S[	        U5       SU S35      e)Nz&No adapter found for objects of type: z ())r  r8   r   	TypeErrorrV   )r)   r(   r1   s      r*   r+   ItemAdapter.__init__z  sT    ''C{{4  "4y (
 DT$ZLPRSWRXXYZ[[r-   c                B   ^ [        U4S jU R                   5       5      $ )Nc              3  D   >#    U  H  oR                  T5      v   M     g 7fr&   )r8   )r   adapter_classr(   s     r*   r   &ItemAdapter.is_item.<locals>.<genexpr>  s     XDW=((..DW    anyr  r7   s    `r*   r8   ItemAdapter.is_item  s    XCDWDWXXXr-   c                B   ^ [        U4S jU R                   5       5      $ )Nc              3  D   >#    U  H  oR                  T5      v   M     g 7fr&   )r3   )r   r  r2   s     r*   r   ,ItemAdapter.is_item_class.<locals>.<genexpr>  s!      
I\''
33I\r  r  r0   s    `r*   r3   ItemAdapter.is_item_class  s#     
ILI\I\
 
 	
r-   c                x    U R                    H  nUR                  U5      (       d  M  Us  $    [        U S35      e)Nz is not a valid item class)r  r3   r  r1   r2   r  s      r*   _get_adapter_classItemAdapter._get_adapter_class  s>     00M**:66$$ 1 :,&@ABBr-   c                F    U R                  U5      nUR                  X5      $ r&   )r&  r=   )r1   r2   r<   r  s       r*   r=   %ItemAdapter.get_field_meta_from_class  s#    ..z:66zNNr-   c                F    U R                  U5      nUR                  U5      $ r&   )r&  rA   r%  s      r*   rA   &ItemAdapter.get_field_names_from_class  s#    ..z:77
CCr-   NrC   c               h    U=(       d
    [        X1S9nU R                  U5      nUR                  XS9$ r  )r   r&  rG   )r1   r2   rD   r  s       r*   rG   ItemAdapter.get_json_schema  s:     Q+CLQ..z:,,Z,GGr-   c                .    U R                   R                  $ r&   )r   r(   rO   s    r*   r(   ItemAdapter.item  s    ||   r-   c           	         SR                  U R                  5        VVs/ s H  u  pU SU< 3PM     snn5      nSU R                  R                   SU R                  R                  R                   SU S3$ s  snnf )Nz, =<z for (z)>)joinitemsr6   r_   r(   )r)   keyr{   valuess       r*   __repr__ItemAdapter.__repr__  sq    N:3se1UI.NO4>>**+51D1D1M1M0NaPVxWYZZ Os   A9
c                8    U R                   R                  U5      $ r&   )r   rt   rJ   s     r*   rt   ItemAdapter.__getitem__  s    ||''
33r-   c                :    U R                   R                  X5        g r&   )r   r|   rz   s      r*   r|   ItemAdapter.__setitem__  s      3r-   c                :    U R                   R                  U5        g r&   )r   r   rJ   s     r*   r   ItemAdapter.__delitem__  s      ,r-   c                6    U R                   R                  5       $ r&   )r   r   rO   s    r*   r   ItemAdapter.__iter__  s    ||$$&&r-   c                6    U R                   R                  5       $ r&   )r   r   rO   s    r*   r   ItemAdapter.__len__  s    ||##%%r-   c                8    U R                   R                  U5      $ )z)Return metadata for the given field name.)r   rK   rJ   s     r*   rK   ItemAdapter.get_field_meta  s    ||**:66r-   c                6    U R                   R                  5       $ )zPReturn read-only key view with the names of all the defined fields for the item.)r   rP   rO   s    r*   rP   ItemAdapter.field_names  s    ||''))r-   c                v    U R                  5        VVs0 s H  u  pXR                  U5      _M     snn$ s  snnf )zReturn a dict object with the contents of the adapter. This works slightly different
than calling `dict(adapter)`: it's applied recursively to nested items (if there are any).
)r5  _asdict)r)   r6  r{   s      r*   asdictItemAdapter.asdict  s1     <@::<H<ZS\\%((<HHHs   5c                  ^  [        U[        5      (       a5  UR                  5        VVs0 s H  u  p#UT R                  U5      _M     snn$ [        U[        [
        [        45      (       a  UR                  U 4S jU 5       5      $ [        UT 5      (       a  UR                  5       $ T R                  U5      (       a  T " U5      R                  5       $ U$ s  snnf )Nc              3  F   >#    U  H  nTR                  U5      v   M     g 7fr&   )rI  )r   xr1   s     r*   r   &ItemAdapter._asdict.<locals>.<genexpr>  s      =AQs   !)
r   rj   r5  rI  r   settupler6   rJ  r8   )r1   objr6  r{   s   `   r*   rI  ItemAdapter._asdict  s    c4  >AiikJk
CU++kJJcD#u-..== = ===c3::<;;ss8??$$
 Ks   C)r   rR   rX   rU   )r2   rV   rS   ztype[AdapterInterface]rY   r[   r\   )rS   r   )rS   rZ   r   r   r   r   r   r]   r^   )rS   rj   )rR  r   rS   r   )"r_   r`   ra   rb   rc   r   r"   r   r   r   r!   r  r   r+   rd   r8   r3   r&  r=   rA   rG   propertyr(   r8  rt   r|   r   r   r   rK   rP   rJ  rI  re   r@   r-   r*   r    r    k  s,    9>	
9O5 \ Y Y 
 

 C C O O D D DHHH*AH	H H ! ![44-'&7*I 	 	r-   r    ),
__future__r   r   abcr   r   collectionsr   collections.abcr   r   r	   r
   typesr   typingr   itemadapter._importsr   r   itemadapter._json_schemar   r   r   r   r   r   r   itemadapter.utilsr   r   r   r   r   __all__r   rh   r   r   r!   r   r   r"   r    r@   r-   r*   <module>r_     s    "  '  H H "  ;   ,~ ,^%% %%P$;.0@ $;N?24D ?B\%& \%~ (#-/? #&*35E *>i. ir-   