feat(isbn): create isbn class

This commit is contained in:
Kristofers Solo 2023-10-22 19:12:24 +03:00
parent cd5154c757
commit 4dc764072d
2 changed files with 13 additions and 0 deletions

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
attrs==23.1.0

12
src/bookstore/isbn.py Normal file
View File

@ -0,0 +1,12 @@
from attrs import define, field, validators
# TODO: create checksum method
@define(frozen=True)
class ISBN(str):
number: str = field(converter=str, validator=validators.matches_re(r"^\d{10}$|^\d{13}$"))
def __str__(self):
if len(self.number) == 10:
return f"{self.number[:9]}-{self.number[9:]}"
return f"{self.number[:3]}-{self.number[3:4]}-{self.number[4:6]}-{self.number[6:12]}-{self.number[12:]}"