From 610705251aba0d1d6dad81571dd3f97e8410b447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Mert=20Yi=C4=9Fit?= <161603309+MehmetMertYigit@users.noreply.github.com> Date: Tue, 3 Nov 2026 16:51:45 +0300 Subject: [PATCH] Create emails_mehmet_mert_yigit.py --- Week05/emails_mehmet_mert_yigit.py | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Week05/emails_mehmet_mert_yigit.py diff --git a/Week05/emails_mehmet_mert_yigit.py b/Week05/emails_mehmet_mert_yigit.py new file mode 100644 index 00000000..df474822 --- /dev/null +++ b/Week05/emails_mehmet_mert_yigit.py @@ -0,0 +1,36 @@ +import re + + +class Emails(list): + + def __init__(self, emails=None): + super().__init__() + + if emails is None: + emails = [] + + for email in emails: + self.validate(email) + + if email not in self: + self.append(email) + + self.data = self + + @staticmethod + def validate(email): + if not isinstance(email, str): + raise ValueError("Email must be a string") + + pattern = r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}" + + if re.fullmatch(pattern, email) is None: + raise ValueError("Invalid email address") + + return True + + def __repr__(self): + return f"Emails({list(self)!r})" + + def __str__(self): + return str(list(self))