
    2~hx
                     X    d Z ddlmZmZ  G d d      Z G d de      Z G d de      Zy	)
zX
This module is responsible for generating the check digit and formatting
ISBN numbers.
    )AnyOptionalc                   N    e Zd ZdZ	 	 	 	 d	dee   dee   dee   dee   ddf
dZy)
ISBN   Neangroup
registrantpublicationreturnc                 <    || _         || _        || _        || _        y N)r   r	   r
   r   )selfr   r	   r
   r   s        b/var/www/peopleoo.sandbox-dev.co.uk/venv/lib/python3.12/site-packages/faker/providers/isbn/isbn.py__init__zISBN.__init__   s!     
$&    )NNNN)__name__
__module____qualname__
MAX_LENGTHr   strr    r   r   r   r   	   sZ    J "#$(%)
'c]
' }
' 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 )
ISBN13argskwargsr   Nc                 N    t        |   |i | | j                         | _        y r   superr   _check_digitcheck_digitr   r   r   	__class__s      r   r   zISBN13.__init__   &    $)&),,.r   c                 <   d t        d      D        }dj                  | j                  | j                  | j                  | j
                  fD cg c]  }||	 c}      }t        d t        ||      D              dz  }d|z
  }|dk(  rdn|}t        |      S c c}w )zCalculate the check digit for ISBN-13.
        See https://en.wikipedia.org/wiki/International_Standard_Book_Number
        for calculation.
        c              3   4   K   | ]  }|d z  dk(  rdnd  yw)   r         Nr   ).0xs     r   	<genexpr>z&ISBN13._check_digit.<locals>.<genexpr>#   s     =aA
1)=s       c              3   >   K   | ]  \  }}t        |      |z    y wr   intr*   bws      r   r,   z&ISBN13._check_digit.<locals>.<genexpr>%        Btq!A
B   
   r   )	rangejoinr   r	   r
   r   sumzipr   )r   weightspartbody	remainderdiffr!   s          r   r    zISBN13._check_digit   s    
 >59=ww$((DJJQUQaQa)bwfjfvwxBs4/ABBRG	I~2:a4;	 xs   BB	separatorc                     |j                  | j                  | j                  | j                  | j                  | j
                  fD cg c]  }|| c}      S c c}w r   )r9   r   r	   r
   r   r!   r   rA   r=   s      r   formatzISBN13.format*   sa    ~~ HHJJOO$$$$
 # 

 	

s   Ar.   	r   r   r   r   r   r   r    rD   __classcell__r#   s   @r   r   r      s<    /c /S /T /
 c 
 
 
S 
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 )
ISBN10r   r   r   Nc                 N    t        |   |i | | j                         | _        y r   r   r"   s      r   r   zISBN10.__init__;   r$   r   c                 "   t        dd      }dj                  | j                  | j                  | j                  fD cg c]  }||	 c}      }t        d t        ||      D              dz  }|dk(  rdn
t        |      }t        |      S c c}w )zCalculate the check digit for ISBN-10.
        See https://en.wikipedia.org/wiki/International_Standard_Book_Number
        for calculation.
        r(   r7   r.   c              3   >   K   | ]  \  }}t        |      |z    y wr   r0   r2   s      r   r,   z&ISBN10._check_digit.<locals>.<genexpr>F   r5   r6      X)r8   r9   r	   r
   r   r:   r;   r   )r   r<   r=   r>   r?   r!   s         r   r    zISBN10._check_digit?   s    
 2,ww$**dootGWGW)Xm\`\lmnBs4/ABBRG	&"_c#i.; ns   BBrA   c                     |j                  | j                  | j                  | j                  | j                  fD cg c]  }|| c}      S c c}w r   )r9   r	   r
   r   r!   rC   s      r   rD   zISBN10.formatJ   sZ    ~~ JJOO$$$$		 # 	
 	
	s   ArE   rF   rH   s   @r   rJ   rJ   :   s<    /c /S /T /	 c 	 
 
S 
r   rJ   N)__doc__typingr   r   r   r   rJ   r   r   r   <module>rS      s2   
 !' ' 
T 
B
T 
r   