diff options
author | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 |
---|---|---|
committer | cyfraeviolae <cyfraeviolae> | 2024-04-03 03:17:55 -0400 |
commit | 12cf076118570eebbff08c6b3090e0d4798447a1 (patch) | |
tree | 3ba25e17e3c3a5e82316558ba3864b955919ff72 /venv/lib/python3.11/site-packages/faker/providers/isbn/isbn.py | |
parent | c45662ff3923b34614ddcc8feb9195541166dcc5 (diff) |
no venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/faker/providers/isbn/isbn.py')
-rw-r--r-- | venv/lib/python3.11/site-packages/faker/providers/isbn/isbn.py | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/venv/lib/python3.11/site-packages/faker/providers/isbn/isbn.py b/venv/lib/python3.11/site-packages/faker/providers/isbn/isbn.py deleted file mode 100644 index b712a83..0000000 --- a/venv/lib/python3.11/site-packages/faker/providers/isbn/isbn.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -This module is responsible for generating the check digit and formatting -ISBN numbers. -""" -from typing import Any, Optional - - -class ISBN: - MAX_LENGTH = 13 - - def __init__( - self, - ean: Optional[str] = None, - group: Optional[str] = None, - registrant: Optional[str] = None, - publication: Optional[str] = None, - ) -> None: - self.ean = ean - self.group = group - self.registrant = registrant - self.publication = publication - - -class ISBN13(ISBN): - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.check_digit = self._check_digit() - - def _check_digit(self) -> str: - """Calculate the check digit for ISBN-13. - See https://en.wikipedia.org/wiki/International_Standard_Book_Number - for calculation. - """ - weights = (1 if x % 2 == 0 else 3 for x in range(12)) - body = "".join([part for part in [self.ean, self.group, self.registrant, self.publication] if part is not None]) - remainder = sum(int(b) * w for b, w in zip(body, weights)) % 10 - diff = 10 - remainder - check_digit = 0 if diff == 10 else diff - return str(check_digit) - - def format(self, separator: str = "") -> str: - return separator.join( - [ - part - for part in [ - self.ean, - self.group, - self.registrant, - self.publication, - self.check_digit, - ] - if part is not None - ] - ) - - -class ISBN10(ISBN): - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.check_digit = self._check_digit() - - def _check_digit(self) -> str: - """Calculate the check digit for ISBN-10. - See https://en.wikipedia.org/wiki/International_Standard_Book_Number - for calculation. - """ - weights = range(1, 10) - body = "".join([part for part in [self.group, self.registrant, self.publication] if part is not None]) - remainder = sum(int(b) * w for b, w in zip(body, weights)) % 11 - check_digit = "X" if remainder == 10 else str(remainder) - return str(check_digit) - - def format(self, separator: str = "") -> str: - return separator.join( - [ - part - for part in [ - self.group, - self.registrant, - self.publication, - self.check_digit, - ] - if part is not None - ] - ) |