Skip to content

Commit e4026d2

Browse files
Add Emails class for validating unique email addresses
1 parent f083b29 commit e4026d2

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

‎Week05/emails_aleyna_gultekin‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import re
2+
3+
4+
class Emails(list):
5+
"""A list of unique and valid e-mail addresses."""
6+
7+
EMAIL_PATTERN = re.compile(r"^[\w.+-]+@[\w-]+(\.[\w-]+)+$")
8+
9+
def __init__(self, emails):
10+
valid_emails = self.validate(emails)
11+
super().__init__(valid_emails)
12+
self.data = list(self)
13+
14+
@staticmethod
15+
def validate(emails):
16+
unique = []
17+
for email in emails:
18+
if not isinstance(email, str):
19+
raise ValueError(f"{email!r} is not a string")
20+
if not Emails.EMAIL_PATTERN.match(email):
21+
raise ValueError(f"{email!r} is not a valid e-mail address")
22+
if email not in unique:
23+
unique.append(email)
24+
return unique
25+
26+
def __repr__(self):
27+
return f"Emails({list(self)!r})"
28+
29+
def __str__(self):
30+
return ", ".join(self)

0 commit comments

Comments
 (0)