ó
ç'ÊUc           @   s­   d  d l  Z  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
 m Z m Z m Z d g Z d e j f d „  ƒ  YZ e d k r© e j ƒ  n  d S(   iÿÿÿÿN(   t   count(   t   str_to_unicodet   unicode_to_strt   memoizemethod_noargst   isbinarytextt   equal_attributest   WeakKeyCachet   stringify_dictt   get_func_argss   scrapy.utils.pythont   UtilsPythonTestCasec           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   c         C   s}   |  j  t d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d ƒ d ƒ |  j t t d ƒ d t d d	 d
 d ƒk sy t ‚ d  S(   Ns   lelÃ±eu   lelÃ±es   lelñes   latin-1u	   Ã±eÃ±eÃ±ei§  u   ï¿½s   aíbs   utf-8t   errorst   replace(   t   assertEqualR   t   assertRaisest	   TypeErrort   AssertionError(   t   self(    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_str_to_unicode   s
    c         C   s}   |  j  t d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d ƒ d ƒ |  j t t t ƒ d t d d d d	 ƒk sy t ‚ d  S(
   Nu   Â£ 49s   Â£ 49s   latin-1s   £ 49s   lelñet   ?u   aï¿½bR
   R   (   R   R   R   R   t   unittestR   (   R   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_unicode_to_str   s
    c         C   sk   d t  f d „  ƒ  Y} | ƒ  } | j ƒ  } | j ƒ  } | j ƒ  } | | k sU t ‚ | | k	 sg t ‚ d  S(   Nt   Ac           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         S   s   t  ƒ  S(   N(   t   object(   R   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   cached0   s    c         S   s   t  ƒ  S(   N(   R   (   R   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt	   noncached4   s    (   t   __name__t
   __module__R   R   R   (    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyR   .   s   (   R   R   R   R   (   R   R   t   at   onet   twot   three(    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_memoizemethod_noargs-   s    		c         C   sX   t  d ƒ s t ‚ t  d j d ƒ ƒ s/ t ‚ t  d ƒ sB t ‚ t  d ƒ sT t ‚ d  S(   Nt   hellou   hellos   utf-16s   <div>Price £</div>s   £(   R   R   t   encode(   R   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_isbinarytext>   s    c            sÊ  d d
 d „  ƒ  Y} | ƒ  } | ƒ  } |  j  t | | g  ƒ ƒ |  j  t | | d d g ƒ ƒ d | _ d | _ |  j t | | d g ƒ ƒ d | _ |  j  t | | d d g ƒ ƒ d | _ |  j t | | d d g ƒ ƒ d | _ |  j  t | | d d g ƒ ƒ i  | _ i  | _ |  j t | | d g ƒ ƒ d | j d <d | j d <t j d ƒ ‰ t j d ƒ ‰  ‡  ‡ f d	 †  } |  j t | | | d g ƒ ƒ d | j d <|  j  t | | | d g ƒ ƒ d  S(   Nt   Objc           B   s   e  Z RS(    (   R   R   (    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyR#   M   s   t   xt   yi   i   t   metat   zc            s   ˆ ˆ  |  ƒ ƒ S(   N(    (   t   obj(   t   get_metat   get_z(    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   <lambda>s   s    (    (	   t   failIfR   R$   t
   assertTrueR%   R&   t   operatort
   itemgettert
   attrgetter(   R   R#   R   t   bt	   compare_z(    (   R)   R*   s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_equal_attributesL   s2    									c            s£   d t  f d „  ƒ  Y} t ƒ  ‰  t ‡  f d †  ƒ } | ƒ  } | | } |  j | | | ƒ |  j | | | ƒ  ƒ |  j | | | ƒ ~ |  j t | j ƒ ƒ d  S(   Nt   _Weakmec           B   s   e  Z RS(    (   R   R   (    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyR4   {   s    c            s
   t  ˆ  ƒ S(   N(   t   next(   t   k(   t   _values(    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyR+   }   s    (   R   R    R   R   t   assertNotEqualt   assertFalset   lent	   _weakdict(   R   R4   t   wkR6   t   v(    (   R7   s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_weakkeycachez   s    		
c         C   s¤   i d d 6d d 6d d 6d t  ƒ  6} t | d t ƒ} |  j | | ƒ |  j | | k ƒ |  j t d „  | j ƒ  Dƒ ƒ ƒ |  j t d	 „  | j ƒ  Dƒ ƒ ƒ d  S(
   Ni{   R   t   cu   bu   eu   dt	   keys_onlyc         s   s   |  ] } t  | t ƒ Vq d  S(   N(   t
   isinstancet   unicode(   t   .0R$   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pys	   <genexpr>‹   s    c         s   s   |  ] } t  | t ƒ Vq d  S(   N(   RA   RB   (   RC   R$   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pys	   <genexpr>Œ   s    (   R   R   t   FalseR   R,   t   anyt   keyst   values(   R   t   dt   d2(    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_stringify_dict†   s    %#c         C   s¯   d
 d d t  ƒ  d f g } t | ƒ } t | d t ƒ} |  j | | ƒ |  j | | k ƒ |  j t d „  | j ƒ  Dƒ ƒ | j ƒ  ƒ |  j t d	 „  | j ƒ  Dƒ ƒ ƒ d  S(   NR   i{   u   bR?   u   du   eR@   c         s   s   |  ] } t  | t ƒ Vq d  S(   N(   RA   RB   (   RC   R$   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pys	   <genexpr>”   s    c         s   s   |  ] } t  | t ƒ Vq d  S(   N(   RA   RB   (   RC   R$   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pys	   <genexpr>•   s    (   R   i{   (   u   bR?   (   u   du   e(	   R   t   dictR   RD   R   R,   RE   RF   RG   (   R   t   tuplesRH   RI   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_stringify_dict_tuplesŽ   s    ,c         C   s{   i d d 6d d 6d d 6d t  ƒ  6} t | ƒ } |  j | | ƒ |  j | | k ƒ |  j t d „  | j ƒ  Dƒ ƒ ƒ d  S(   Ni{   R   R?   u   bu   eu   dc         s   s   |  ] } t  | t ƒ Vq d  S(   N(   RA   RB   (   RC   R$   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pys	   <genexpr>œ   s    (   R   R   R   R,   RE   RF   (   R   RH   RI   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_stringify_dict_keys_only—   s
    %c   
      C   sò  d „  } d  d  d „ } d t f d „  ƒ  Y} d t f d „  ƒ  Y} | d d d	 ƒ } | ƒ  } t j | d  ƒ } t j | d
 d  ƒ} t j | d  ƒ }	 |  j t | ƒ d d
 d g ƒ |  j t | ƒ d d
 d g ƒ |  j t | ƒ d d
 d g ƒ |  j t | j ƒ d d
 d g ƒ |  j t | ƒ d
 d g ƒ |  j t | ƒ d d g ƒ |  j t |	 ƒ d g ƒ |  j t | ƒ d d
 d g ƒ |  j t t ƒ g  ƒ |  j t t j ƒ g  ƒ |  j t d j	 ƒ g  ƒ |  j t t
 j d ƒ ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   R   R1   R?   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   f1Ÿ   s    c         S   s   d  S(   N(    (   R   R1   R?   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   f2¢   s    R   c           B   s   e  Z d  „  Z d „  Z RS(   c         S   s   d  S(   N(    (   R   R   R1   R?   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   __init__¦   s    c         S   s   d  S(   N(    (   R   R   R1   R?   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   method©   s    (   R   R   RQ   RR   (    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyR   ¥   s   	t   Callablec           B   s   e  Z d  „  Z RS(   c         S   s   d  S(   N(    (   R   R   R1   R?   (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   __call__®   s    (   R   R   RT   (    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyRS   ¬   s   i   i   i   R1   R   R?   t    (   t   NoneR   t	   functoolst   partialR   R   RR   RB   t   splitt   joinR.   R/   (
   R   RO   RP   R   RS   R   t   calt
   partial_f1t
   partial_f2t
   partial_f3(    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   test_get_func_argsž   s*    		"(   R   R   R   R   R   R"   R3   R>   RJ   RM   RN   R_   (    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyR	      s   					.					t   __main__(   RW   R.   R   t	   itertoolsR    t   scrapy.utils.pythonR   R   R   R   R   R   R   R   t   __doctests__t   TestCaseR	   R   t   main(    (    (    s;   /home/travis/build/scrapy/scrapy/tests/test_utils_python.pyt   <module>   s   :	º