
    eit
                     \    d Z ddlmZmZ d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Optional   c                   J    e Zd Z	 	 	 	 ddee   dee   dee   dee   ddf
dZy)	ISBNNeangroup
registrantpublicationreturnc                 <    || _         || _        || _        || _        y N)r   r	   r
   r   )selfr   r	   r
   r   s        [/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/faker/providers/isbn/isbn.py__init__zISBN.__init__   s!     
$&    )NNNN)__name__
__module____qualname__r   strr    r   r   r   r      sU     "#$(%)
'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   )r8   r   r	   r
   r   r    r   r@   r<   s      r   formatzISBN13.format*   sa    ~~ HHJJOO$$$$
 # 

 	

s   Ar-   	r   r   r   r   r   r   r   rC   __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'   r6   r-   c              3   >   K   | ]  \  }}t        |      |z    y wr   r/   r1   s      r   r+   z&ISBN10._check_digit.<locals>.<genexpr>F   r4   r5      X)r7   r8   r	   r
   r   r9   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r@   c                     |j                  | j                  | j                  | j                  | j                  fD cg c]  }|| c}      S c c}w r   )r8   r	   r
   r   r    rB   s      r   rC   zISBN10.formatJ   sZ    ~~ JJOO$$$$		 # 	
 	
	s   ArD   rE   rG   s   @r   rI   rI   :   s<    /c /S /T /	 c 	 
 
S 
r   rI   N)__doc__typingr   r   
MAX_LENGTHr   r   rI   r   r   r   <module>rS      s7   
 !
' '
T 
B
T 
r   