ó
ëYTc           @   s¯   d  Z  d d l m Z e Z d Z d Z d Z d Z d Z	 e e e e	 e e Z
 e
 d k sf t ‚ d „  Z d „  Z e d	 „ Z d
 „  Z d „  Z e d „ Z d „  Z d S(   s   Various utility functions.iÿÿÿÿ(   t   commonprefixiP   i   i   i    c         C   sL   t  |  ƒ | | } | t k rH d |  |  | |  t  |  ƒ | f }  n  |  S(   Ns   %s[%d chars]%s(   t   lent   _PLACEHOLDER_LEN(   t   st	   prefixlent	   suffixlent   skip(    (    s-   lib/python2.7/site-packages/unittest2/util.pyt   _shorten   s    (c             sô   t  t t |  ƒ ƒ }  t t t |  ƒ ƒ } | t k r: |  St |  ƒ ‰  t ˆ  ƒ ‰ t | ˆ t t } | t	 k rÅ t t t	 | ˆ t k  s– t
 ‚ t ˆ  t | ƒ ‰  t  ‡  ‡ f d †  |  Dƒ ƒ St ˆ  t t	 ƒ ‰  t  ‡  ‡ f d †  |  Dƒ ƒ S(   Nc         3   s   |  ] } ˆ  | ˆ Vq d  S(   N(    (   t   .0R   (   t   prefixR   (    s-   lib/python2.7/site-packages/unittest2/util.pys	   <genexpr>'   s    c         3   s)   |  ] } ˆ  t  | ˆ t t ƒ Vq d  S(   N(   R   t   _MIN_DIFF_LENt   _MIN_END_LEN(   R   R   (   R	   R   (    s-   lib/python2.7/site-packages/unittest2/util.pys	   <genexpr>*   s   (   t   tuplet   mapt	   safe_reprt   maxR   t   _MAX_LENGTHR    t   _MIN_BEGIN_LENR   t   _MIN_COMMON_LENt   AssertionErrorR   (   t   argst   maxlent
   common_len(    (   R	   R   s-   lib/python2.7/site-packages/unittest2/util.pyt   _common_shorten_repr   s     c         C   s\   y t  |  ƒ } Wn  t k
 r2 t j |  ƒ } n X| sL t | ƒ t k  rP | S| t  d S(   Ns    [truncated]...(   t   reprt	   Exceptiont   objectt   __repr__R   R   (   t   objt   shortt   result(    (    s-   lib/python2.7/site-packages/unittest2/util.pyR   -   s    c         C   s0   y t  |  ƒ SWn t k
 r+ t j |  ƒ SXd  S(   N(   t   strR   R   t   __str__(   R   (    (    s-   lib/python2.7/site-packages/unittest2/util.pyt   safe_str6   s    c         C   s    d |  j  t |  d |  j ƒ f S(   Ns   %s.%st   __qualname__(   t
   __module__t   getattrt   __name__(   t   cls(    (    s-   lib/python2.7/site-packages/unittest2/util.pyt   strclass<   s    c         C   s  g  } g  } xš |  r¨ |  j  ƒ  } y | j | ƒ Wn t k
 rR | j | ƒ n X| r xI |  | f D]8 } y x t rˆ | j | ƒ qr WWqf t k
 r qf Xqf Wq q W| rxU | r| j  ƒ  } | j | ƒ y x t rí | j | ƒ q× WWq² t k
 rq² Xq² W| | f S| | f S(   s²   Same behavior as sorted_list_difference but
    for lists of unorderable items (like dicts).

    As it does a linear search per item (remove) it
    has O(n*n) performance.
    (   t   popt   removet
   ValueErrort   appendt   True(   t   expectedt   actualt   ignore_duplicatet   missingt
   unexpectedt   itemt   lst(    (    s-   lib/python2.7/site-packages/unittest2/util.pyt   unorderable_list_difference@   s4    				
c         C   s   |  | k |  | k  S(   s.   Return -1 if x < y, 0 if x == y and 1 if x > y(    (   t   xt   y(    (    s-   lib/python2.7/site-packages/unittest2/util.pyt   three_way_cmpe   s    N(   t   __doc__t   os.pathR    R,   t
   __unittestR   R   R   R   R   R
   R   R   R   t   FalseR   R!   R'   R4   R7   (    (    (    s-   lib/python2.7/site-packages/unittest2/util.pyt   <module>   s"   					%