
    h                        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  SS/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g)    )annotations)MappingProxyType)Any)PydanticUndefinedPydanticV1Undefinedattrpydanticpydantic_v1get_field_meta_from_classis_itemc                >    [         c  g[         R                  " U 5      $ NF)r   hasobjs    X/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/itemadapter/utils.py_is_attrs_classr      s    |88C=    c                F    [         c  g[        U [         R                  5      $ r   )r	   
issubclass	BaseModelr   s    r   _is_pydantic_modelr      s    c8--..r   c                F    [         c  g[        U [         R                  5      $ r   )r
   r   r   r   s    r   _is_pydantic_v1_modelr      s    c;0011r   c                   0 nU R                   U   nS H)  n[        X45      (       d  M  [        X45      =nc  M%  XRU'   M+     S[        4S/ 44 H-  u  pF[        X45      (       d  M  [        X45      =oV:w  d  M)  XRU'   M/     [	        U5      $ )N)#alias_priorityaliasallow_inf_nan
annotationcoerce_numbers_to_strdecimal_placesdefault_factory
deprecateddescriptiondiscriminatorexamplesexclude	fail_fastfield_title_generatorfrozengegtinit_varinitjson_schema_extrakw_onlylelt
max_digits
max_length
min_lengthmultiple_ofpatternreprserialization_aliasstricttitle
union_modevalidate_defaultvalidation_aliasdefaultmetadata)model_fieldshasattrgetattrr   r   )
item_model
field_namer@   field	attributevaluedefault_values          r   _get_pydantic_model_metadatarJ   #   s    H##J/E$	J 5$$753L*L%)Y"'YM$R 
%&	R% 	 5$$753L*L%)^"'Y% H%%r   c                t   0 nU R                   U   nUR                  nS H  n[        XE5      nUc  M  XbU'   M     UR                  =n[        [
        4;  a  XbS'   UR                  S L=n(       a  XbS'   UR                  (       d  UR                  US'   UR                  UR                  5        [        U5      $ )N)r   constr$   r+   r,   r1   r2   	max_itemsr4   	min_itemsr5   r6   regexr;   r?   r"   allow_mutation)
__fields__
field_inforC   r?   r   Ellipsisr"   rP   updateextrar   )rD   rE   r@   rF   rR   rG   rH   s          r   _get_pydantic_v1_model_metadatarV   Y   s    H!!*-E!!J	  
."'Y%( ###-@(,KK#%%T11u1&+"#$$%/%>%>!"OOJ$$%H%%r   c                0    SSK Jn  UR                  U 5      $ )zwReturn True if the given object belongs to one of the supported types, False otherwise.

Alias for ItemAdapter.is_item
r   ItemAdapter)itemadapter.adapterrY   r   )r   rY   s     r   r   r      s    
 0s##r   c                0    SSK Jn  UR                  X5      $ )a  Return a read-only mapping with metadata for the given field name, within the given
item class. If there is no metadata for the field, or the item class does not support
field metadata, an empty object is returned.

Field metadata is taken from different sources, depending on the item type:
* scrapy.item.Item: corresponding scrapy.item.Field object
* dataclass items: "metadata" attribute for the corresponding field
* attrs items: "metadata" attribute for the corresponding field
* pydantic models: corresponding pydantic.field.FieldInfo/ModelField object

The returned value is an instance of types.MappingProxyType, i.e. a dynamic read-only view
of the original mapping, which gets automatically updated if the original mapping changes.
r   rX   )rZ   rY   r   )
item_classrE   rY   s      r   r   r      s     000HHr   N)r   r   returnbool)rD   r   rE   strr]   r   )r\   typerE   r_   r]   r   )
__future__r   typesr   typingr   itemadapter._importsr   r   r   r	   r
   __all__r   r   r   rJ   rV   r   r    r   r   <module>rg      sJ    " "   '	
2/23&l#&L$Ir   