
    li                     P    d Z ddlmZmZ  G d d          Z G d de          ZdS )zW
This module is responsible for generating the check digit and formatting
SBN numbers.
    )AnyOptionalc                   D    e Zd ZdZ	 	 ddee         dee         ddfdZdS )SBN	   N
registrantpublicationreturnc                 "    || _         || _        d S N)r   r	   )selfr   r	   s      g/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/faker/providers/sbn/sbn.py__init__zSBN.__init__   s    
 %&    )NN)__name__
__module____qualname__
MAX_LENGTHr   strr    r   r   r   r   	   s^        J %)%)' 'SM' c]' 
	' ' ' ' ' 'r   r   c                   J     e Zd Zdededdf fdZdefdZd
dedefd	Z xZS )SBN9argskwargsr
   Nc                 l     t                      j        |i | |                                 | _        d S r   )superr   _check_digitcheck_digit)r   r   r   	__class__s      r   r   zSBN9.__init__   s9    $)&))),,..r   c                    t          dd          }d                    d | j        | j        fD                       }t	          d t          ||          D                       dz  }|dk    rdnt          |          }t          |          S )	a)  Calculate the check digit for SBN-9.
        SBNs use the same check digit calculation as ISBN. See
        https://en.wikipedia.org/wiki/International_Standard_Book_Number
                for calculation. Only modification is weights range from 1 to 9
                instead of 1 to 10.
           r    c                     g | ]}||S r   r   .0parts     r   
<listcomp>z%SBN9._check_digit.<locals>.<listcomp>"   s    aaaPTP`P`P`P`r   c              3   @   K   | ]\  }}t          |          |z  V  d S r   )int)r%   bws      r   	<genexpr>z$SBN9._check_digit.<locals>.<genexpr>#   s0      BBtq!A
BBBBBBr      
   X)rangejoinr   r	   sumzipr   )r   weightsbody	remainderr   s        r   r   zSBN9._check_digit   s     1++wwaa$/4;K)LaaabbBBs4/A/ABBBBBRG	&"__cc#i..;r   r"   	separatorc                 d    |                     d | j        | j        | j        fD                       S )Nc                     g | ]}||S r   r   r$   s     r   r'   zSBN9.format.<locals>.<listcomp>)   s,       
 #  $##r   )r1   r   r	   r   )r   r7   s     r   formatzSBN9.format'   sI    ~~  O$$  

 

 
	
r   )r"   )	r   r   r   r   r   r   r   r:   __classcell__)r   s   @r   r   r      s        /c /S /T / / / / / / c        
 
 
S 
 
 
 
 
 
 
 
r   r   N)__doc__typingr   r   r   r   r   r   r   <module>r>      s    
 !              	' 	' 	' 	' 	' 	' 	' 	'
 
 
 
 
3 
 
 
 
 
r   