
    'i8                         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y)    N)BuiltinFunctionTypeFunctionType)curryidentity	keyfilter	valfilter
merge_with   )dev_skip_testc                 v    t        |dd      xs d}|j                  |       xs dt        t        |            v S )N
__module__ ztoolz.functoolz.curry)getattr
startswithstrtype)modnamefuncmods      Q/var/www/br/venv/lib/python3.12/site-packages/cytoolz/tests/test_embedded_sigs.py	isfrommodr   
   s7    
$b
)
/RC>>'"P&=T$Z&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              }|j                         D ]k  \  }\  }}|d
v rt        |t              rt        j                  |      }nUt        || j                        r t        j                  |j                        }nt        j                  |j                        }|j!                  |j"                  j%                         D cg c]B  }|j&                  t        j(                  ur"|j!                   ||j&                              n|D c}      }|j*                  }|j!                  dd      j!                  dd      }	|j,                  t/        |      z   }
|
|v rL|
|	v rRd|d|
d|j*                  }J |        yc c}w )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 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y)test_class_sigs.<locals>.wrapzNe.g., allow `factory=<class 'dict'>` to instead be `factory=dict` in signaturec                     || _         y r   )obj)selfr*   s     r   __init__z&test_class_sigs.<locals>.wrap.__init__$   s	    DHr   c                 V    t        | j                  dt        | j                              S )N__name__)r   r*   repr)r+   s    r   __repr__z&test_class_sigs.<locals>.wrap.__repr__'   s    488Zdhh@@r   N)r.   r   __qualname____doc__r,   r0   r#   r   r   wrapr(   "   s    \		Ar   r3   >   __getattr__)default)
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   inspect	signaturer   r   r,   replacer6   valuesr5   _emptyr2   r.   r   )r   r3   dkey
toolz_funccytoolz_func
toolz_specvdocdoc_alt	toolz_sigmessager$   r&   s               @@r   test_class_sigsrI      s   
 9W-u~~>JYy173C3CDL M)+L 6
CJ6ELA A 	8Z6A+,779 "''j,/!j,/ **:6J
EKK0 **:??;J !**:+>+>?J''
 $..557	  99GNN2 		$qyy/	2 ( 

 ""++mR088E''3z?:	S I$8 y,*>*>@G "'!5;"s   AH
r   compcomposec                     t        t        d      t        j                        } t	        d |       } | j                         D ]  \  }}|dv r|j                  j                         }t        |      dkD  sJ d| d|j                          dt        j                  ||      z  }||d   v sJ d|d	|j                         |d
   rJ d|d|j                         |d   rJ d|d|j                          y)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>U   s    q	'9 r   >   r4      r7   z docstring too short:

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

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

z2 docstring too many blank lines after signature:

N)r   r   r   r8   r   r9   r2   
splitlineslenaliasesget)r$   r@   valdoclinessigs        r   test_sig_at_beginningrW   O   s   
 Yy173C3CDL9<HL &&( "S/!;;))+8}q  	Dse4S[[MB	D  gkk#s++hqk! 	"CKK!	"! A; 	"CKK!	" { 	"CKK!	"{!"r   )r:   r   typesr   r   r   r   r   r   r	   r   r   rI   rN   rR   rW   r#   r   r   <module>rY      si      3 E E ( Q Q
 7" 7"t L	9
 " "r   