ó
îHƒYc           @   s§   d  d l  Z  d  d l Z d  d l 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 i d d	 6Z e	 d
 „  ƒ Z d S(   iÿÿÿÿN(   t   BuiltinFunctionType(   t   curryt   identityt	   keyfiltert	   valfiltert
   merge_with(   t   dev_skip_testc         C   s=   t  | d d ƒ p d } | j |  ƒ p< d t t | ƒ ƒ k S(   Nt
   __module__t    s   toolz.functoolz.curry(   t   getattrt
   startswitht   strt   type(   t   modnamet   funct   mod(    (    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyt	   isfrommod	   s    c             sÉ  d d l  }  t t d ƒ |  j ƒ ‰ t t d ƒ t j ƒ ‰  t d „  ˆ  ƒ ‰  t ‡  f d †  ˆ ƒ ‰ t ‡ f d †  ˆ  ƒ ‰  t t ˆ ˆ  ƒ } x2| j ƒ  D]$\ } \ } } | d k rÁ q n  y t	 j
 | ƒ } WnS t k
 r)y t	 j
 | j ƒ } Wq*t t f k
 r%t	 j
 | j ƒ } q*Xn X| j t	 j | Œ  } | j } | j t	 j | i d „  d 6Ž  } | j d d ƒ }	 | | k p“| |	 k s d | | | j f }
 t sÁt |
 ƒ ‚ q q Wd S(   sŽ    Test that all ``cdef class`` extension types in ``cytoolz`` have
        correctly embedded the function signature as done in ``toolz``.
    iÿÿÿÿNt   toolzt   cytoolzc         S   s   t  |  t ƒ S(   N(   t
   isinstanceR    (   t   x(    (    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyt   <lambda>   R   c            s
   |  ˆ  k S(   N(    (   R   (   t   cytoolz_dict(    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyR      R   c            s
   |  ˆ  k S(   N(    (   R   (   t
   toolz_dict(    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyR      R   t   exceptst   juxtt   memoizet   flipc         S   s   d t  |  d t |  ƒ ƒ S(   Nt   =t   __name__(   R	   t   repr(   R   (    (    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyR   6   R   t   formatvalues   Py_ssize_t R   s_   cytoolz.%s does not have correct function signature.

Expected: %s

Docstring in cytoolz is:
%s(   R   R   R   R   (   R   R   R   t   __dict__R   R   R   R   t   itemst   inspectt
   getargspect	   TypeErrorR   t   AttributeErrort   __init__R   t   formatargspect   __doc__t   replacet   Falset   AssertionError(   R   t   dt   keyt
   toolz_funct   cytoolz_funct
   toolz_spect	   toolz_sigt   doct   toolz_sig_altt   doc_altt   message(    (   R   R   s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyt   test_class_sigs   s8    			R   t   composet   compc          C   s  t  t d ƒ t j ƒ }  t d „  |  ƒ }  xÚ |  j ƒ  D]Ì \ } } | j j ƒ  } t | ƒ d k s} t	 d | | j f ƒ ‚ d t
 j | | ƒ } | | d k s¼ t	 d | | j f ƒ ‚ | d sà t	 d	 | | j f ƒ ‚ | d s7 t	 d
 | | j f ƒ ‚ q7 Wd S(   s~    Test that the function signature is at the beginning of the docstring
        and is followed by exactly one blank line.
    R   c         S   s
   |  t  k S(   N(   t	   skip_sigs(   R   (    (    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyR   K   R   i   s#   cytoolz.%s docstring too short:

%ss   %s(i    s8   cytoolz.%s docstring missing signature at beginning:

%si   s<   cytoolz.%s docstring missing blank line after signature:

%ss>   cytoolz.%s docstring too many blank lines after signature:

%sN(   R   R   R   R    R   R!   R(   t
   splitlinest   lenR+   t   aliasest   get(   R   R-   t   valt   doclinest   sig(    (    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyt   test_sig_at_beginningE   s     (   R"   R   t   typesR    R   R   R   R   R   R   R   R6   R9   R<   RA   (    (    (    s?   lib/python2.7/site-packages/cytoolz/tests/test_embedded_sigs.pyt   <module>   s   (2	