
    e                     >    d Z ddlZddlmZ ddlmZ eefZd Z	ddZ
y)ze
Copy/paste from scrapy source at the moment, to ensure tests are working.
Refactoring to come later
    N)partial)is_itemc                 b    | g S t        | d      rt        | t              st        |       s| S | gS )zConvert an argument to an iterable. The argument can be a None, single
    value, or an iterable.

    Exception: if arg is a dict, [arg] will be returned
    __iter__)hasattr
isinstance_ITERABLE_SINGLE_VALUESr   )args    1lib/python3.12/site-packages/itemloaders/utils.pyarg_to_iterr      s6     {	Z 3 78
u    c                 *   t        |       s!t        dt        |       j                        g }	 t	        j
                  |       }t        | t              rl| j                  }| j                  }|j                  j                         D ]6  \  }}|j                  |v r|r|j                  |v r&|j                  |       8 n0|j                  j                         D ]  }|j                  |        |r|r|d   dk(  r|dd }|S # t        $ r |cY S w xY w)z2Return the argument name list of a callable objectzfunc must be callable, got r   self   N)callable	TypeErrortype__name__inspect	signature
ValueErrorr   r   argskeywords
parametersitemsnameappendkeys)func	stripselfr   sigpartial_args
partial_kwr   params           r   get_func_argsr%      s   D>5d4j6I6I5LMNND% $ yy]]
>>//1 	KD%zz\)ejjJ6KK	 NN'') 	DKK	 Td1g/ABxK'  s   D DD)F)__doc__r   	functoolsr   itemadapterr   strbytesr	   r   r%    r   r   <module>r,      s)      u* $r   