Ñò
¯×ßGc        
   @   s"   d  Z  d g Z d Z d „  Z d S(   sN   
Common checksum routines (used in multiple localflavor/ cases, for example).
t   luhni    i   i   i   i   i   i   i   i   i	   c         C   sÉ   t  |  t ƒ p t |  ƒ }  n yŽ t g  } |  d d d … D] } | t | ƒ q> ~ ƒ } t g  } |  d d d … D] } | t t | ƒ qx ~ ƒ } | | d d j SWn t j
 o t SXd S(   s½   
    Checks a candidate number for validity according to the Luhn
    algorithm (used in validation of, for example, credit cards).
    Both numeric and string candidates are accepted.
    iÿÿÿÿNiþÿÿÿi
   i    (   t
   isinstancet
   basestringt   strt   sumt   intt   LUHN_ODD_LOOKUPt
   ValueErrort   False(   t	   candidatet   _[1]t   ct   evenst   _[2]t   odds(    (    s@   /usr/local/lib/python2.6/dist-packages/django/utils/checksums.pyR    	   s    :>N(
   i    i   i   i   i   i   i   i   i   i	   (   t   __doc__t   __all__R   R    (    (    (    s@   /usr/local/lib/python2.6/dist-packages/django/utils/checksums.pyt   <module>   s   	