From e93953331b34a2d2e0e99a5dfd7436ec901b3c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20alp=20=C3=96zdemir?= <109877223+akoalp@users.noreply.github.com> Date: Sun, 4 Jan 2026 10:55:53 +0300 Subject: [PATCH] Create emails_alp_ozdemir.py --- Week05/emails_alp_ozdemir.py | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Week05/emails_alp_ozdemir.py diff --git a/Week05/emails_alp_ozdemir.py b/Week05/emails_alp_ozdemir.py new file mode 100644 index 00000000..484a825c --- /dev/null +++ b/Week05/emails_alp_ozdemir.py @@ -0,0 +1,38 @@ +import re + +class Emails(list): + def __init__(self, emails): + unique_emails = [] + if emails: + seen = set() + for email in emails: + if email not in seen: + unique_emails.append(email) + seen.add(email) + + super().__init__(unique_emails) + + self.data = self + + + self.validate() + + def validate(self): + + email_pattern = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$') + + for email in self: + + if not isinstance(email, str): + raise ValueError("Emails must be strings") + + if not email_pattern.match(email): + raise ValueError(f"Invalid email address: {email}") + + def __repr__(self): + + return f"Emails({super().__repr__()})" + + def __str__(self): + + return f"Emails({super().__str__()})"