From d7b1ef85fb7d458bf9a231936cebe35013db1597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Recep=20Kadir=20Alt=C4=B1nta=C5=9F?= <126012220+kdraltntas@users.noreply.github.com> Date: Sun, 30 Nov 2025 01:40:00 +0300 Subject: [PATCH] Implement Emails class for unique email validation --- ...ails_recepkadir_alt\304\261nta\305\237.py" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "Week05/emails_recepkadir_alt\304\261nta\305\237.py" diff --git "a/Week05/emails_recepkadir_alt\304\261nta\305\237.py" "b/Week05/emails_recepkadir_alt\304\261nta\305\237.py" new file mode 100644 index 00000000..1d11e869 --- /dev/null +++ "b/Week05/emails_recepkadir_alt\304\261nta\305\237.py" @@ -0,0 +1,30 @@ +class Emails(list): + def __init__(self, emails): + unique_emails = [] + seen = set() + for email in emails: + if email not in seen: + unique_emails.append(email) + seen.add(email) + + self.validate(unique_emails) + super().__init__(unique_emails) + self.data = self + + def validate(self, emails): + for email in emails: + if not isinstance(email, str): + raise ValueError("All items must be strings") + + if "@" not in email: + raise ValueError("Email must contain @") + + parts = email.split("@") + if len(parts) != 2 or "." not in parts[1]: + raise ValueError("Invalid domain format") + + def __repr__(self): + return f"Emails({super().__repr__()})" + + def __str__(self): + return super().__str__()