
vÅÏ^­  ã               @   s“   d  Z  d Z d Z d Z d Z d Z e d Z Gd d „  d ƒ Z e e ƒ Z e e ƒ Z	 e e ƒ Z
 e e ƒ Z e e ƒ Z e e d	 d
 ƒZ d S)až  
Convert numbers from base 10 integers to base X strings and back again.

Sample usage::

  >>> base20 = BaseConverter('0123456789abcdefghij')
  >>> base20.encode(1234)
  '31e'
  >>> base20.decode('31e')
  1234
  >>> base20.encode(-1234)
  '-31e'
  >>> base20.decode('-31e')
  -1234
  >>> base11 = BaseConverter('0123456789-', sign='$')
  >>> base11.encode('$1234')
  '$-22'
  >>> base11.decode('$-22')
  '$1234'

Z01Z0123456789ABCDEFZ823456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyzZ$0123456789abcdefghijklmnopqrstuvwxyzZ>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzz-_c               @   sU   e  Z d  Z d Z d d d „ Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d S)ÚBaseConverterÚ
0123456789ú-c             C   s1   | |  _  | |  _ | |  j k r- t d ƒ ‚ d  S)Nz.Sign character found in converter base digits.)ÚsignÚdigitsÚ
ValueError)Úselfr   r   © r   ú7/tmp/pip-build-8lau8j11/django/django/utils/baseconv.pyÚ__init__3   s    		zBaseConverter.__init__c             C   s#   d |  j  j t |  j ƒ |  j f S)Nz<%s: base%s (%s)>)Ú	__class__Ú__name__Úlenr   )r   r   r   r	   Ú__repr__9   s    zBaseConverter.__repr__c             C   s9   |  j  | |  j |  j d ƒ \ } } | r5 |  j | S| S)Nr   )ÚconvertÚdecimal_digitsr   r   )r   ÚiÚnegÚvaluer   r   r	   Úencode<   s    $zBaseConverter.encodec             C   sA   |  j  | |  j |  j |  j ƒ \ } } | r7 d | } t | ƒ S)Nr   )r   r   r   r   Úint)r   Úsr   r   r   r   r	   ÚdecodeB   s    '
zBaseConverter.decodec       	      C   så   t  | ƒ d | k r5 t  | ƒ d d  … } d } n d } d } x1 t  | ƒ D]# } | t | ƒ | j | ƒ } qN W| d k rŽ | d } nM d } xD | d k rÚ | t | ƒ } | | | } t | t | ƒ ƒ } q— W| | f S)Né    é   Ú )Ústrr   Úindexr   )	r   ÚnumberZfrom_digitsZ	to_digitsr   r   ÚxÚdigitÚresr   r   r	   r   H   s    	!zBaseConverter.convertN)	r   Ú
__module__Ú__qualname__r   r
   r   r   r   r   r   r   r   r	   r   0   s   r   r   ú$N)Ú__doc__ZBASE2_ALPHABETZBASE16_ALPHABETZBASE56_ALPHABETZBASE36_ALPHABETZBASE62_ALPHABETZBASE64_ALPHABETr   Zbase2Zbase16Zbase36Zbase56Zbase62Úbase64r   r   r   r	   Ú<module>&   s   
0