
    hV              
         % S SK Jr  S SKrS SKrS SKrS SK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  S SKJr  S SKJrJrJrJrJrJrJrJr  S	S
KJrJrJr  S	SKJr  \(       a  S SK J!r!  S	SK"J#r#J$r$  \%" S5      S\&S\'S\(S\)S0r*\RV                   " S S5      5       r,S8S jr-S9S jr.\ " S S\5      5       r/\ " S S\5      5       r0/ SQr1S:S jr2S r3S;S jr4 S SK J5r5  \\51r6          S<S" jr9S9S# jr:        S=S$ jr;S>S% jr<S?S& jr=      S@S' jr>SAS( jr? SB       SCS) jjr@ SB     SDS* jjrASES+ jrB          SFS, jrC\R                  S-\R                  S.\R                  S/\R                  S00rH      SGS1 jrISES2 jrJ SB       SCS3 jjrK            SHS4 jrL        SIS5 jrM        SJS6 jrN              SKS7 jrOg! \7 a    \1r6S \8S!'    GNf = f)L    )annotationsN)IteratorMappingSequence)Set)copy)Enum)dedent)TYPE_CHECKINGAnyProtocolUnionget_args
get_originget_type_hintsruntime_checkable   )PydanticUndefinedPydanticV1Undefinedattr)_is_pydantic_model)MappingProxyType)AdapterInterfaceItemAdapternullbooleanintegernumberstringc                  L    \ rS rSr% S\S'    \R                  " \S9rS\S'   Sr	g)	_JsonSchemaState)   z$type[ItemAdapter | AdapterInterface]adapter)default_factoryz	set[type]
containers N)
__name__
__module____qualname____firstlineno____annotations__dataclassesfieldsetr%   __static_attributes__r&       _/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/itemadapter/_json_schema.pyr!   r!   )   s)    11 (--cBJ	Br0   r!   c                    [        5       n/ nU  HD  nU[        [        4;   a  [        OUnXA;  d  M"  UR                  U5        UR	                  U5        MF     U$ N)r.   intfloataddappend)typesseenresulttkeys        r1   dedupe_typesr=   8   sM    5DFS%L(ea?HHSMMM!	 
 Mr0   c                   [        [        U5      5      n[        R                  5        VVs/ s H  u  pEXC;   d  M  UPM     nnn[	        U Vs/ s H  ow[        ;  d  M  UPM     sn5      nU(       d  U R                  SU5        g / n	U R                  SU	5      n
XLa  g U
R                  S[        U5      S:  a  UOUS   05        U H"  n0 n[        XU5        U
R                  U5        M$     g s  snnf s  snf )NtypeanyOfr   r   )	r=   r   SIMPLE_TYPESitemssorted
setdefaultr7   lenupdate_prop_from_type)prop	prop_typestate
prop_typeskvsimple_typesr;   complex_types
new_any_ofany_ofcomplex_typecomplex_props                r1   update_prop_from_unionrS   C   s    hy12J"."4"4"6J"6$!!/A"6LJzKz!l5JAzKLM-')J__Wj1F
MM63|+<q+@<lSToVW%')l%@l# & KKs   C.C.C4C4c                  2    \ rS rSrSS jrSS jrS	S jrSrg)
ArrayProtocolU   c                    g r3   r&   selfs    r1   __iter__ArrayProtocol.__iter__W       r0   c                    g r3   r&   rX   s    r1   __len__ArrayProtocol.__len__X       cr0   c                    g r3   r&   )rY   items     r1   __contains__ArrayProtocol.__contains__Y   s    sr0   r&   N)returnzIterator[Any]re   r4   )rb   r   re   bool)r'   r(   r)   r*   rZ   r^   rc   r/   r&   r0   r1   rU   rU   U   s    ,!2r0   rU   c                  h    \ rS rSrSS jrSS jrSS jrSS jrS rS r	S r
SSS	 jjrS
 rS rSrg)ObjectProtocol\   c                    g r3   r&   rY   r<   s     r1   __getitem__ObjectProtocol.__getitem__^   s    Cr0   c                    g r3   r&   rX   s    r1   rZ   ObjectProtocol.__iter___   r\   r0   c                    g r3   r&   rX   s    r1   r^   ObjectProtocol.__len__`   r`   r0   c                    g r3   r&   rl   s     r1   rc   ObjectProtocol.__contains__a   s    cr0   c                    g r3   r&   rX   s    r1   keysObjectProtocol.keysb   s    Cr0   c                    g r3   r&   rX   s    r1   rB   ObjectProtocol.itemsc   s    Sr0   c                    g r3   r&   rX   s    r1   valuesObjectProtocol.valuesd   s    cr0   c                    g r3   r&   )rY   r<   defaults      r1   getObjectProtocol.gete   s    r0   c                    g r3   r&   rY   others     r1   __eq__ObjectProtocol.__eq__f       Sr0   c                    g r3   r&   r   s     r1   __ne__ObjectProtocol.__ne__g   r   r0   r&   N)r<   strre   r   )re   zIterator[str]rf   )r<   r   re   rg   ).)r<   r   r~   r   )r'   r(   r)   r*   rm   rZ   r^   rc   rv   rB   r{   r   r   r   r/   r&   r0   r1   ri   ri   \   s     /,!14  r0   ri   )z(?P<z(?<=z(?<!z(?>z\Az\Zz(?i)z(?m)z(?s)z(?x)z(?#c                @   ^  [        U 4S j[         5       5      (       + $ )Nc              3  ,   >#    U  H	  oT;   v   M     g 7fr3   r&   ).0subpatterns     r1   	<genexpr>#is_valid_pattern.<locals>.<genexpr>   s     H-Gc'>-Gs   )anyINVALID_PATTERN_SUBSTRINGS)r   s   `r1   is_valid_patternr   y   s     H-GHHHHr0   c                    [        U 5      nU(       d  [        $ US   [        L a  USS n[        U5      n[	        U5      S:X  a  [        [        U5      5      $ [        [        U5         $ )zGiven the type hint of a Python type that maps to a JSON Schema array,
such as a list, a tuple or a set, return the type of the items in that
array.Nr   )	r   r   Ellipsisr.   rE   nextiterr   tuple)	type_hintargsunique_argss      r1   
array_typer      sc     ID
Bx8CRyd)K
;1D%&&{#$$r0   c                J    [        U5      (       a  U R                  SU5        g g )Nr   )r   rD   )rG   r   s     r1   update_prop_from_patternr      s       	7+ !r0   )	UnionTypezset[Any]UNION_TYPESc                b   [        U[        5      (       Ga  [        U[        [        45      (       ay  U R                  SS5        [        U[        5      (       a  U R                  SS5        SU ;   nU R                  S0 5      n[        U5      n[        XVU5        U(       d
  U(       d  U S	 g [        U[        5      (       aY  U R                  SS5        [        U5      nU(       a4  [        U5      S:X  d   eUS   nU R                  S	0 5      n	[        XU5        g U[        ;   a  [        XU5        g g )
Nr?   arrayuniqueItemsTrB   object   r   additionalProperties)
isinstancer?   
issubclassr   AbstractSetrD   r   rF   r   r   rE   r   rS   )
rG   originrH   rI   	had_itemsrB   	item_typer   
value_typepropss
             r1   update_prop_from_originr      s     &$fx566OOFG,&+..t44IOOGR0E"9-I!%E:Mfg&&OOFH-I&D4yA~%~!!W
(>C%e?t6 r0   c                   [        U5      =nb  [        XX5        g [        U[        5      (       Ga  UR                  R                  U5      (       a  XR                  ;   a  U R                  SS5        g UR                  R                  U5        UR                  R                  UUS9nUR                  R                  U5        UR                  5        H  u  pVU R                  XV5        M     g [        U[        5      (       a|  U Vs/ s H  owR                  PM     nn[        U Vs1 s H  n[        U5      iM     sn5      n	[!        U	5      S:X  a  U	S   O["        U	   n[%        XU5        U R                  SU5        g [        U[&        5      (       dw  [        U[(        5      (       a  U R                  SS5        g [        U[*        5      (       a:  U R                  SS5        [        U[,        5      (       a  U R                  SS	5        g [.        R1                  U5      n
U
b  U R                  SU
5        g g s  snf s  snf )
Nr?   r   )_stater   r   enumr   r   T)r   r   r   r?   r#   is_item_classr%   rD   r6   get_json_schemaremoverB   r   r	   valuer   rE   r   rF   r   ri   rU   r   rA   r   )rG   rH   rI   r   	subschemarK   rL   rb   r{   value_typesjson_schema_types              r1   rF   rF      s   Y''4i?)T""==&&y11,,,1  +55 6 I ##I.!)% *i&&-67YTjjYF7& 9&Qa& 9:K*-k*:a*?AU;EWI!$59OOFF+)S)))^441)]330i55OOM48#''	2# 01 $! 8 9s   H8(H=c                    U R                  S0 5      n[        U5      nUR                  5        H  u  pVXT;  a  M  XE   n[        XgU5        M     g)zInspect the type hints of the class attributes of the item class and,
for any matching JSON Schema property that has no type set, set the type
based on the type hint.
propertiesN)r   r   rB   rF   )schema
item_classrI   r   attribute_type_hints	prop_namerG   rH   s           r1   *_setdefault_attribute_types_on_json_schemar      sL     JJ|R(E)*5 ;;=	0(3	du5	 )r0   c              #    #     [         R                  " U 5      n[        R
                  " [        U5      5      n UR                  S   n[        U[        R                  5      (       d   e[        R                  " U5       GH  n[        U[        R                  5      (       aF  [        UR                  S   [        R                  5      (       a  UR                  S   R                  nOa[        U[        R                   5      (       a@  [        UR"                  [        R                  5      (       a  UR"                  R                  nOM  Xa;  a  M  UR                  R%                  U5      S-   nU['        UR                  5      :  a  GM  UR                  U   n[        U[        R(                  5      (       d  GM<  [        UR*                  [        R,                  5      (       d  GMh  [        UR*                  R*                  [.        5      (       d  GM  XhR*                  R*                  4v   GM     g ! [        [        4 a     g f = f! [         a     g f = f7f)Nr   r   )inspect	getsourceOSError	TypeErrorastparser
   body
IndexErrorr   ClassDefiter_child_nodesAssigntargetsNameid	AnnAssigntargetindexrE   Exprr   Constantr   )	r   
attr_namessourcetree
class_nodenode	attr_namenext_idx	next_nodes	            r1   iter_docstringsr      s    "":. 99VF^$DYYq\

 j#,,////$$Z0dCJJ''Jt||A,Q,QQ**Icmm,,DKK1R1RI&??((.2s:??++OOH-	y#((++9??CLL999??00#66__2222% 1 Y 
   	s]   IH3 II	 	E.I<'I('II3IIII	
IIIIc                j    U R                    H#  n[        X!15       H  u  p4X1:X  d  M  Us  s  $    M%     g)zHRecursively search the MRO for a docstring for the given attribute
name.N)__mro__r   )r   r   clsnamedocs        r1   get_inherited_attr_docstringr     s7     !!(k:ID 
 ; " r0   c                    U R                  S0 5      n[        U5      nU(       d  gU H5  nUR                  U0 5      nSU;  d  M  [        X5      nU(       d  M1  XeS'   M7     g)zInspect the docstrings after each class attribute of the item class and
its bases and, for any matching JSON Schema property that has no
description set, set the description to the contents of the docstring.r   Ndescription)r   r.   rD   r   )r   r   r   r   r   rG   r   s          r1   /_setdefault_attribute_docstrings_on_json_schemar     s^     JJ|R(EUJ		2.$.zECs&)]#  r0   c                ~    [        U S0 5      n[        U5      nUR                  SS5        UR                  SS5        U$ )N__json_schema_extra__r?   r   r   F)getattrr   rD   )r   json_schema_extrar   s      r1    base_json_schema_from_item_classr   .  sC    
,CRH#$F
fh'
,e4Mr0   c                   U=(       d
    [        X1S9n[        U5      nU R                  U5      =(       d    S Vs0 s H  nX@R                  X5      _M     nnU(       d  U$ UR	                  5        VVs0 s H!  u  pFU[        UR                  S0 5      5      _M#     snnUS'   US   R	                  5        VVs/ s H  u  pGSU;  d  M  UPM     nnnU(       a  UR                  SU5        U$ s  snf s  snnf s  snnf )Nr#   r%   r&   r   r   r~   required)r!   r   get_field_names_from_classget_field_meta_from_classrB   r   r   rD   )	r#   r   rI   r   
field_namefields_meta
field_meta
field_datar   s	            r1   _json_schema_from_item_classr   6  s    O%g,OE-j9F "<<ZHNBNNJ 	55jMMN    '2&7&7&9&9"J 	D(;R@AA&9F< '-\&:&@&@&B&B"JJ& 	&B  
 *h/M#s   C-4(C29C8	C8c                    U=(       d
    [        5       nSU ;   a  g U S   R                  5        VVs/ s H  u  p#X!;  d  M  SU;  d  M  UPM     nnnU(       a  X@S'   g g s  snnf )Nr   r   r~   )r.   rB   )r   optional_fieldsr-   metadatar   s        r1   update_required_fieldsr   O  sw     &.OV  &l399;;OE' 	,5X,E 	;  
 %z s   A AAc           
        [        U 5      n[        R                  " U 5      nU(       d  U$ SSKJn  U" U 5        U Vs0 s H2  oUR                  [        UR                  R                  S0 5      5      _M4     snUS'   [        5       nU H!  nUS   UR                     n[        XuX5        M#     [        X&5        [        X 5        U$ s  snf )Nr   )resolve_typesr   r   )r   r   fieldsr   r   r   r   r   r.   _update_attrs_propr   r   )r   rI   r   r   r   r-   default_factory_fieldsrG   s           r1   _json_schema_from_attrsr  ^  s    -j9F[[$F"* TZSY%

D++,?DEESYF< (+ul#EJJ/4F  6:3FGMs   9Cc                B   [        XR                  U5        [        UR                  [        R
                  5      (       a  UR                  UR                  5        O9UR                  [        R                  La  U R                  SUR                  5        [        X5        g )Nr~   )rF   r?   r   r~   r   Factoryr6   r   NOTHINGrD   _update_attrs_prop_validation)rG   r-   rI   r   s       r1   r   r   t  sc     $

E2%--..""5::.	dll	*	5==1!$.r0   minimumexclusiveMinimummaximumexclusiveMaximumc                L   UR                   (       d  g [        UR                   5      R                  S:X  a  UR                   R                  nOUR                   /nU GHD  n[        U5      R                  nUS:X  aE  [        R                  UR                  5      nU(       d  MG  U R                  XSR                  5        Md  US:X  a'  U R                  S[        UR                  5      5        M  US:X  a4  UR                  [        L a  SOSnU R                  XSR                  5        M  US:X  a5  UR                  [        L a  S	OS
nU R                  XSR                  5        GM  US:X  d  GM  [        USS 5      =(       d    UR                  n[!        XR"                  5        GMG     g )N_AndValidator_NumberValidator_InValidatorr   _MinLengthValidator	minLengthminItems_MaxLengthValidator	maxLengthmaxItems_MatchesReValidatorr   )	validatorr?   r'   _validatorsATTRS_NUMBER_VALIDATORSr   compare_funcrD   boundlistoptionsr   
min_length
max_lengthr   regexr   r   )rG   r-   
validatorsr  validator_type_namer<   pattern_objs          r1   r  r    s8    ??EOO%%8__00
oo&
	"9o66"44)--i.D.DECOOC1 N2OOFD):):$;< $99!&s!2+
COOC!5!56 $99!&s!2+
COOC!5!56 $99!)Y=PK$T+>+>?#  r0   c           
        [        U 5      n[        R                  " U 5      n[        U 5      n[	        5       nU(       Ga  U Vs0 s H2  ofR
                  [        UR                  R                  S0 5      5      _M4     snUS'   U H  nUS   UR
                     nUR                  UR
                  5      nUb  [        XxU5        UR                  [        R                  La  UR                  UR
                  5        My  UR                  [        R                  Ld  M  UR                  SUR                  5        M     [        X%5        [!        X 5        U$ s  snf )Nr   r   r~   )r   r,   r   r   r.   r   r   r   r   rF   r$   MISSINGr6   r~   rD   r   r   )	r   rI   r   r   resolved_field_typesr   r-   rG   
field_types	            r1   _json_schema_from_dataclassr&    s   -j9F
+F)*5 UW] 
W]eJJU^^//0CRHIIW] 
| E,'

3D-11%**=J%%d>$$K,?,??&**5::6k&9&99	5==9  	v>3FGM 
s   9Ec                   U=(       d
    [        X1S9n[        U5      (       d  [        XU5      $ [        UR                  R                  S0 5      5      nUR                  R                  S5      nUR                  SS5        US:X  a  UR                  SS5        U R                  U5      =(       d    S	 Vs0 s H  nXPR                  X5      _M     nnU(       d  U$ UR                  5        VVs0 s H!  u  pWU[        UR                  S0 5      5      _M#     snnUS
'   [        5       nUR                  5        H  u  pWUS
   U   n	[        XXrU5        M     [        X85        [        X15        U$ s  snf s  snnf )Nr   r   extrar?   r   forbidr   Fr&   r   )r!   r   _json_schema_from_pydantic_v1r   model_configr   rD   r   r   rB   r.   _update_pydantic_propr   r   )
r#   r   rI   r   r(  r   r   r   r   rG   s
             r1   _json_schema_from_pydanticr-    sv    O%g,OEj)),W%HH##$7<F ##''0E
fh'0%8 66zBHbHHD 	//
AAH   PVP\P\P^P^ndd8<< 3R899P^F< (+u ,,.l#D)d(;QR ) 6:3FGMs   6E./(E3c                v   SU;   a  US   nUb  [        XU5        SU;   a  UR                  U5        O'SU;   a!  US   [        La  U R                  SUS   5        SU;   a  [	        XS   W5        S H   u  pgXb;   d  M  U R                  XrU   5        M"     SU;   a  U R                  S[        US   5      5        g g )N
annotationr$   r~   r   )titler1  r   r   examplesr4  
deprecated)rF   r6   r   rD    _update_pydantic_prop_validationrg   )rG   r   r   r   r   r%  metadata_keyjson_schema_fields           r1   r,  r,    s     xl+
!!$F;H$""4(	h	8I#6>O#O	8I#67X(
/CZP,'
 #OO-/EF, xd8L+A&BC  r0   c           	        U H  n[        U5      R                  nUS:X  a.  SUR                  ;   a  UR                  S   n[        X5        MJ  ML  US:X  a*  U[        L a  SOSnU R                  XcR                  5        M|  US:X  a*  U[        L a  SOSnU R                  XcR                  5        M  S	 H5  u  pxXGR                  5       :X  d  M  U R                  U[        X75      5        M7     M     g )
N_PydanticGeneralMetadatar   MinLenr  r  MaxLenr  r  )ger  gtr  ler  ltr	  )
r?   r'   __dict__r   r   rD   r  r  
capitalizer   )	rG   r   r%  metadata_itemmetadata_item_typer   r<   r7  r8  s	            r1   r6  r6    s    
 "!-099!;;M222'00;(7 3  8+!+s!2+
COOC!9!9:8+!+s!2+
COOC!9!9:4/ &)@)@)BBOO$5w}7[\4 "r0   c                   [        [        UR                  S0 5      5      n[        UR                  SS 5      nUR                  SS5        US:X  a  UR                  SS5        U R	                  U5      =(       d    S Vs0 s H  nXPR                  X5      _M     nnU(       d  U$ UR                  5        VVs0 s H!  u  pWU[        UR                  S	0 5      5      _M#     snnUS
'   [        5       n[        U5      n	UR                  5        H  u  pWUS
   U   n
[        XXyX5        M     [        X85        [        X15        U$ s  snf s  snnf )Nschema_extrar(  r?   r   r)  r   Fr&   r   r   )r   r   ConfigrD   r   r   rB   r   r.   r   _update_pydantic_v1_propr   r   )r#   r   rI   r   r(  r   r   r   r   field_type_hintsrG   s              r1   r*  r*    sS    
!!>26F J%%w5E
fh'0%8 66zBHbHHD 	//
AAH   PVP\P\P^P^ndd8<< 3R899P^F< (+u%j1 ,,.l#D) 4J	
 )
 6:3FGM%s   >E7(Ec                P   X1   nUb  [        XU5        SU;   a  UR                  U5        O.SU;   a(  US   [        [        4;  a  U R	                  SUS   5        S H   u  pxXr;   d  M  U R	                  XU   5        M"     S H]  n	U	 S3U;   a,  U[
        L a  U	 S3OU	 S3n
U R	                  XU	 S3   5        M8  U	 S3U;   d  MC  U R	                  U	 S3X) S3   5        M_     S	 H  nXr;   d  M
  X'   n[        X5          O   S
U;   a  U R	                  S
[        US
   5      5        g g )Nr$   r~   )r0  r2  r3  r=  r?  rA  rC  )minmax_lengthLengthItems_items)r   r  r5  )rF   r6   r   r   rD   r   r   rg   )rG   r   r   rM  r   rI   r%  r7  r8  prefixr<   r   s               r1   rL  rL  5  sX    "'Jd6H$""4(	h	8I#6? $ 		8I#67,' #OO-/EF, !XW)'1S'8VHF#>NCOOCVHG*<!=>xv(*OOvhe,h7H.IJ ! -#,G$T3	 -
 xd8L+A&BC  r0   )r8   zSequence[type]re   z
list[type])rG   dict[str, Any]rH   r   rI   r!   re   None)r   r   re   rg   )rG   rV  r   r   re   rW  )
rG   rV  r   r   rH   r   rI   r!   re   rW  )r   rV  r   r?   rI   r!   re   rW  )r   r?   r   zAbstractSet[str]re   zIterator[tuple[str, str]])r   r?   r   r   re   z
str | None)r   rV  r   r?   re   rW  )r   r?   re   rV  r3   )r#   type[AdapterInterface]r   r?   rI   z_JsonSchemaState | Nonere   rV  )r   rV  r   zset[str] | Nonere   rW  )r   r?   rI   r!   re   rV  )
rG   rV  r-   attr.AttributerI   r!   r   set[str]re   rW  )rG   rV  r-   rY  re   rW  )rG   rV  r   r   r   r   r   r!   r   rZ  re   rW  )rG   rV  r   zSequence[Any]r%  r?   re   rW  )r#   rX  r   r?   rI   r!   re   rV  )rG   rV  r   r   r   zMapping[str, Any]rM  rV  r   rZ  rI   r!   re   rW  )P
__future__r   r   r,   r   operatorcollections.abcr   r   r   r   r   r   r   r	   textwrapr
   typingr   r   r   r   r   r   r   r   _importsr   r   r   utilsr   r8   r   r#   r   r   r?   rg   r4   r5   r   rA   	dataclassr!   r=   rS   rU   ri   r   r   r   r   r   r   ImportErrorr+   r   rF   r   r   r   r   r   r   r   r  r   r>  r@  rB  rD  r  r  r&  r-  r,  r6  r*  rL  r&   r0   r1   <module>rd     s   " 
    7 7 .   	 	 	 C B %&6 	J)	8   $$ 3H 3 3 
!X 
! 
! I%,
% )$K7
7"%7257>N7	78$2N66(,65E6	63D**(,*	*$ Y]#15>U4 @D&&-<&	&,/
// / %	/
 
/ KKKK#KKKK#	 @
@@ 
@<0 Y]#15>U>D
D
D D 	D
 %D 
D8]
]] ] 
	]8#15>N>)D
)D
)D  )D %	)D
 %)D )D 
)D{  $"GK#$s   G G10G1