ó
ù¢TQc        
   @   s2   d  Z  d g Z d d l m Z d Z d „  Z d S(   sN   
Common checksum routines (used in multiple localflavor/ cases, for example).
t   luhniÿÿÿÿ(   t   sixi    i   i   i   i   i   i   i   i   i	   c         C   s¸   t  |  t j ƒ s! t |  ƒ }  n  y~ t g  |  d d d … D] } t | ƒ ^ q; ƒ } t g  |  d d d … D] } t t | ƒ ^ qm ƒ } | | d d k SWn t k
 r³ t SXd 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
   isinstanceR   t   string_typest   strt   sumt   intt   LUHN_ODD_LOOKUPt
   ValueErrort   False(   t	   candidatet   ct   evenst   odds(    (    s/   ../Django//lib/python/django/utils/checksums.pyR       s    26N(
   i    i   i   i   i   i   i   i   i   i	   (   t   __doc__t   __all__t   django.utilsR   R   R    (    (    (    s/   ../Django//lib/python/django/utils/checksums.pyt   <module>   s   	