
    7>ne                         d dl Z d dlZd dlmZmZ d dlmZmZmZmZm	Z	 d dl
m
Z
 ed             Ze
d             ZdgZdd	iZe
d
             ZdS )    N)BuiltinFunctionTypeFunctionType)curryidentity	keyfilter	valfilter
merge_with)dev_skip_testc                     t          |dd          pd}|                    |           pdt          t          |                    v S )N
__module__ ztoolz.functoolz.curry)getattr
startswithstrtype)modnamefuncmods      @lib/python3.11/site-packages/cytoolz/tests/test_embedded_sigs.py	isfrommodr   	   sA    
$b
)
)
/RC>>'""P&=T$ZZ&PP    c                    
 ddl } t          t          d          | j                  t          t          d          t          j                  
t          d 
          
t          
fd          t          fd
          
 G d d	          t          t          
          }|                                D ]\  }\  }}t          |t                    rt          j        |          }nHt          || j                  rt          j        |j                  }nt          j        |j                  }|                    fd
|j                                        D                       }|j        }|                    dd                              dd          }|j        t+          |          z   }||v s||v sd|d|d|j        }	J |	             dS )z Test that all ``cdef class`` extension types in ``cytoolz`` have
        correctly embedded the function signature as done in ``toolz``.
    r   Ntoolzcytoolzc                 .    t          | t                     S N)
isinstancer   xs    r   <lambda>z!test_class_sigs.<locals>.<lambda>   s    :a9L+M+M'M r   c                     | v S r    )r   cytoolz_dicts    r   r    z!test_class_sigs.<locals>.<lambda>   s    Q,%6 r   c                     | v S r   r"   )r   
toolz_dicts    r   r    z!test_class_sigs.<locals>.<lambda>   s    qJ r   c                       e Zd ZdZd Zd ZdS )test_class_sigs.<locals>.wrapzNe.g., allow `factory=<class 'dict'>` to instead be `factory=dict` in signaturec                     || _         d S r   )obj)selfr)   s     r   __init__z&test_class_sigs.<locals>.wrap.__init__#   s    DHHHr   c                 R    t          | j        dt          | j                            S )N__name__)r   r)   repr)r*   s    r   __repr__z&test_class_sigs.<locals>.wrap.__repr__&   s    48Zdh@@@r   N)r-   r   __qualname____doc__r+   r/   r"   r   r   wrapr'   !   s=        \\	 	 		A 	A 	A 	A 	Ar   r2   c                     g | ];}|j         t          j        ur$|                     |j                              n|<S ))default)r4   inspect_emptyreplace).0vr2   s     r   
<listcomp>z#test_class_sigs.<locals>.<listcomp>5   sZ         9GN22 		$$qy//	222  r   )
parameterszPy_ssize_t r   z=u'z='cytoolz.z6 does not have correct function signature.

Expected: z

Docstring in cytoolz is:
)r   r   r   __dict__r   r   r	   r   itemsr   r   r5   	signaturer   r   r+   r7   r;   valuesr1   r-   r   )r   dkey
toolz_funccytoolz_func
toolz_specdocdoc_alt	toolz_sigmessager#   r%   r2   s             @@@r   test_class_sigsrJ      s;   
 LLL9W--u~>>JYy1173CDDL MM)+ +L 6666
CCJ6666EELA A A A A A A A 	8Z66A+,7799 " "''j,j,// 	@ *:66JJ
EK00 	@ *:?;;JJ !*:+>??J''    $.5577	   ( 
 

 "++mR0088EE'3z??:	S  I$8$8$8 ##yyy,*>*>@G "'!!!7" "r   r   compcomposec                     t          t          d          t          j                  } t	          d |           } |                                 D ]\  }}|j                                        }t          |          dk    sJ d|d|j                    dt          
                    ||          z  }||d         v sJ d|d|j                    |d	         rJ d|d
|j                    |d         sJ d|d|j                    dS )z~ Test that the function signature is at the beginning of the docstring
        and is followed by exactly one blank line.
    r   c                     | t           vS r   )	skip_sigsr   s    r   r    z'test_sig_at_beginning.<locals>.<lambda>R   s    q	'9 r      r<   z docstring too short:

z%s(r   z, docstring missing signature at beginning:

   z0 docstring missing blank line after signature:

z2 docstring too many blank lines after signature:

N)r   r   r   r=   r   r>   r1   
splitlineslenaliasesget)r#   rB   valdoclinessigs        r   test_sig_at_beginningrY   L   sb   
 Yy1173CDDL99<HHL &&(( " "S;))++8}}q    7:ssCKKH !   gkk#s+++hqk!!!!ssCKK! "!! A; 	" 	" 	"ssCKK!	" 	" 	" { 	" 	" 	"ssCKK!	" 	" 	" 	"" "r   )r5   r   typesr   r   r   r   r   r   r	   r
   r   rJ   rO   rT   rY   r"   r   r   <module>r[      s      3 3 3 3 3 3 3 3 E E E E E E E E E E E E E E ' ' ' ' ' ' Q Q Q
 5" 5" 5"p L	9
 " " " " "r   