From f1367c1b6ef08ef46ce0f90a822210d613ae3911 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Fri, 21 Jun 2024 10:52:55 -0400 Subject: [PATCH 1/3] Support an ALLOW_DISPLAY_NAME env. var. in the CLI --- email_validator/__main__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/email_validator/__main__.py b/email_validator/__main__.py index caa111b..46ab445 100644 --- a/email_validator/__main__.py +++ b/email_validator/__main__.py @@ -30,6 +30,7 @@ def main(dns_resolver: Optional[_Resolver] = None) -> None: # Set options from environment variables. options: Dict[str, Any] = {} for varname in ('ALLOW_SMTPUTF8', 'ALLOW_QUOTED_LOCAL', 'ALLOW_DOMAIN_LITERAL', + 'ALLOW_DISPLAY_NAME', 'GLOBALLY_DELIVERABLE', 'CHECK_DELIVERABILITY', 'TEST_ENVIRONMENT'): if varname in os.environ: options[varname.lower()] = bool(os.environ[varname]) From 5eb475da78e336424223d69f2487c68d91ada5ae Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Fri, 21 Jun 2024 12:25:14 -0400 Subject: [PATCH 2/3] Handle allow_empty_local as an Optional, like other keywords --- email_validator/__init__.py | 1 + email_validator/validate_email.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/email_validator/__init__.py b/email_validator/__init__.py index 626aa00..726dd47 100644 --- a/email_validator/__init__.py +++ b/email_validator/__init__.py @@ -27,6 +27,7 @@ def caching_resolver(*args, **kwargs): # Default values for keyword arguments. ALLOW_SMTPUTF8 = True +ALLOW_EMPTY_LOCAL = False ALLOW_QUOTED_LOCAL = False ALLOW_DOMAIN_LITERAL = False ALLOW_DISPLAY_NAME = False diff --git a/email_validator/validate_email.py b/email_validator/validate_email.py index a134c77..41ed262 100644 --- a/email_validator/validate_email.py +++ b/email_validator/validate_email.py @@ -17,7 +17,7 @@ def validate_email( /, # prior arguments are positional-only *, # subsequent arguments are keyword-only allow_smtputf8: Optional[bool] = None, - allow_empty_local: bool = False, + allow_empty_local: Optional[bool] = None, allow_quoted_local: Optional[bool] = None, allow_domain_literal: Optional[bool] = None, allow_display_name: Optional[bool] = None, @@ -34,10 +34,12 @@ def validate_email( """ # Fill in default values of arguments. - from . import ALLOW_SMTPUTF8, ALLOW_QUOTED_LOCAL, ALLOW_DOMAIN_LITERAL, ALLOW_DISPLAY_NAME, \ + from . import ALLOW_SMTPUTF8, ALLOW_EMPTY_LOCAL, ALLOW_QUOTED_LOCAL, ALLOW_DOMAIN_LITERAL, ALLOW_DISPLAY_NAME, \ GLOBALLY_DELIVERABLE, CHECK_DELIVERABILITY, TEST_ENVIRONMENT, DEFAULT_TIMEOUT if allow_smtputf8 is None: allow_smtputf8 = ALLOW_SMTPUTF8 + if allow_empty_local is None: + allow_empty_local = ALLOW_EMPTY_LOCAL if allow_quoted_local is None: allow_quoted_local = ALLOW_QUOTED_LOCAL if allow_domain_literal is None: From 767c7dc2cccb6613f6aa7dca4e65cfea2b77f2f6 Mon Sep 17 00:00:00 2001 From: "Benjamin A. Beasley" Date: Fri, 21 Jun 2024 12:25:49 -0400 Subject: [PATCH 3/3] Support an ALLOW_EMPTY_LOCAL env. var. in the CLI --- email_validator/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/email_validator/__main__.py b/email_validator/__main__.py index 46ab445..f5a912a 100644 --- a/email_validator/__main__.py +++ b/email_validator/__main__.py @@ -29,7 +29,7 @@ def main(dns_resolver: Optional[_Resolver] = None) -> None: # Set options from environment variables. options: Dict[str, Any] = {} - for varname in ('ALLOW_SMTPUTF8', 'ALLOW_QUOTED_LOCAL', 'ALLOW_DOMAIN_LITERAL', + for varname in ('ALLOW_SMTPUTF8', 'ALLOW_EMPTY_LOCAL', 'ALLOW_QUOTED_LOCAL', 'ALLOW_DOMAIN_LITERAL', 'ALLOW_DISPLAY_NAME', 'GLOBALLY_DELIVERABLE', 'CHECK_DELIVERABILITY', 'TEST_ENVIRONMENT'): if varname in os.environ: