ó
È”Mc           @   s)   d d  „ Z d e d „ Z d d l Td S(   c   
      C   s³  |  | k r d St  |  ƒ } t  | ƒ } | | k rU | | |  | f \ }  } } } n  | r„ t | ƒ t k r„ t | | | ƒ } n  t d | d ƒ } xÕ t | ƒ D]Ç } | d t | d d | | d |  | k ƒ } | d <x^ t d | ƒ D]M } | | t | | d d | | d | | | | | k ƒ } | | <qò W| d k	 r¤ t | ƒ | k r¤ | d f Sq¤ W| d }	 | d k	 r›|	 | k r›| d f S|	 t | |	 ƒ | f S(   sJ   
    Compute Levenhstein distance - http://www.merriampark.com/ld.htm
    i    g      ð?i   g        iÿÿÿÿ(   i    g      ð?N(   t   lent   typet   floatt   intt   ranget   mint   None(
   t   at   bt   cutofft   alt   blt   lstt   ait   lastt   bit   res(    (    s7   /usr/lib/python2.7/dist-packages/smart/util/distance.pyt   distance   s(    !8$'

c         C   s  | r! |  j  ƒ  }  | j  ƒ  } n  |  | k r1 d St } |  j d ƒ r^ t } |  j d ƒ }  n  t |  ƒ } t | ƒ } | d k rŒ | d f S| | k rž | p¡ | } | rÓ t | ƒ t k rÓ t | | | ƒ } n  | ré d g | } n t	 d | d ƒ } xÙt	 | ƒ D]Ë}	 |  |	 d k r‹| d t
 | d |	 ƒ }
 | d <xht	 d | ƒ D]3 } | | t
 | | d | | |
 ƒ }
 | | <qQWn!|  |	 d k r| d t
 | d d |	 ƒ }
 | d <xè t	 d | ƒ D]; } | | t
 | | d d | | d |
 ƒ }
 | | <qÑWn™ | d t
 | d d |	 | d |  |	 k ƒ }
 | d <x^ t	 d | ƒ D]M } | | t
 | | d d | | d |
 | | |  |	 k ƒ }
 | | <q[W| d	 k	 r	t
 | ƒ | k r	| d f Sq	W| d } | d	 k	 r| | k r| d f S| t | | ƒ | f S(
   s•   
    Compute Levenhstein distance - http://www.merriampark.com/ld.htm

    Algorithm changed by Gustavo Niemeyer to implement wildcards support.
    i    g      ð?t   *g        i   t   ?iÿÿÿÿ(   i    g      ð?N(   t   lowert   Falset
   startswitht   Truet   lstripR    R   R   R   R   R   R   (   R   R   R	   t
   ignorecaset	   wildstartR
   R   t   maxlR   R   R   R   R   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/distance.pyt   globdistance0   sL    
"4&<8$'

iÿÿÿÿ(   R   N(   R   R   R   R   t	   cdistance(    (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/distance.pyt   <module>   s   /