From fffabe105466f739ad44c970b9608f6c14b4a605 Mon Sep 17 00:00:00 2001 From: bilgemengusoglu Date: Sun, 30 Nov 2025 22:32:55 +0300 Subject: [PATCH] Create Emails class for email validation and storage This class validates and stores a list of unique email addresses. --- Week05/emails_bilgesu_mengusoglu.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Week05/emails_bilgesu_mengusoglu.py diff --git a/Week05/emails_bilgesu_mengusoglu.py b/Week05/emails_bilgesu_mengusoglu.py new file mode 100644 index 00000000..b7abc17e --- /dev/null +++ b/Week05/emails_bilgesu_mengusoglu.py @@ -0,0 +1,28 @@ +import re + +EMAIL_REGEX = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" + + +class Emails(list): + @staticmethod + def validate(email_list): + if not all(isinstance(mail, str) for mail in email_list): + raise ValueError("Emails list can only contain string values.") + + for mail in email_list: + if not re.fullmatch(EMAIL_REGEX, mail): + raise ValueError(f"'{mail}' is not a valid email format.") + + return list(set(email_list)) + + def __init__(self, initial_emails=None): + initial_emails = initial_emails or [] + clean_list = Emails.validate(initial_emails) + self.data = clean_list + super().__init__(clean_list) + + def __repr__(self): + return f"Emails({super().__repr__()})" + + def __str__(self): + return "\n".join(self)