From 3069c94672f5251b566d789cbc43c55f9d8f2e29150d11961425bf690f879217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Wed, 1 Oct 2025 08:48:25 +0000 Subject: [PATCH] - Update to 2.3.0 * The package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name. * The library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new `strict=True` parameter, and the overall 254 character email address length limit is still in place. * New EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains. * When using `allow_display_name=True`, display names are now returned with Unicode NFC normalization. * TypeError is now raised if something other than str (or bytes) is passed as the email address. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-email-validator?expand=0&rev=28 --- .gitattributes | 23 ++ .gitignore | 1 + email_validator-2.2.0.tar.gz | 3 + email_validator-2.3.0.tar.gz | 3 + ignore-urllib3-pyopenssl-warning.patch | 11 + python-email-validator.changes | 288 +++++++++++++++++++++++++ python-email-validator.spec | 107 +++++++++ 7 files changed, 436 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 email_validator-2.2.0.tar.gz create mode 100644 email_validator-2.3.0.tar.gz create mode 100644 ignore-urllib3-pyopenssl-warning.patch create mode 100644 python-email-validator.changes create mode 100644 python-email-validator.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/email_validator-2.2.0.tar.gz b/email_validator-2.2.0.tar.gz new file mode 100644 index 0000000..3329a77 --- /dev/null +++ b/email_validator-2.2.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27aeaf92492d8d86d42f858ee2abf7fe2ec69b0724e8bfa25d0dbcb59cbd47ee +size 43055 diff --git a/email_validator-2.3.0.tar.gz b/email_validator-2.3.0.tar.gz new file mode 100644 index 0000000..30b0f24 --- /dev/null +++ b/email_validator-2.3.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:578564e92e66874bfb6c7506b4b33e7abd79f0e9b99dedd979d03fcd5fc4f039 +size 45521 diff --git a/ignore-urllib3-pyopenssl-warning.patch b/ignore-urllib3-pyopenssl-warning.patch new file mode 100644 index 0000000..52d49b0 --- /dev/null +++ b/ignore-urllib3-pyopenssl-warning.patch @@ -0,0 +1,11 @@ +Index: python-email-validator-2.0.0/setup.cfg +=================================================================== +--- python-email-validator-2.0.0.orig/setup.cfg ++++ python-email-validator-2.0.0/setup.cfg +@@ -43,5 +43,6 @@ max-line-length = 120 + testpaths = tests + filterwarnings = + error ++ ignore:.*urllib3.contrib.pyopenssl.*:DeprecationWarning + markers = + network: mark a test as requiring Internet access. diff --git a/python-email-validator.changes b/python-email-validator.changes new file mode 100644 index 0000000..06cf4dc --- /dev/null +++ b/python-email-validator.changes @@ -0,0 +1,288 @@ +------------------------------------------------------------------- +Wed Oct 1 08:25:10 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 2.3.0 + * The package name is changed from using an underscore (email_validator) + to a dash (email-validator) to match PyPi's normalized package name. + * The library no longer checks that the local part is at most 64 characters + because a more careful reading of RFC 5321 indicates the limit is optional + and such email addresses have been found in the wild. However the check + can be restored using a new `strict=True` parameter, and the overall 254 + character email address length limit is still in place. + * New EmailSyntaxError messages are used for some exiting syntax errors + related to @-sign homoglyphs and invalid characters in internationalized + domains. + * When using `allow_display_name=True`, display names are now returned with + Unicode NFC normalization. + * TypeError is now raised if something other than str (or bytes) is passed + as the email address. + +------------------------------------------------------------------- +Thu Aug 14 13:04:59 UTC 2025 - Markéta Machová + +- Convert to libalternatives on SLE-16-based and newer systems only + +------------------------------------------------------------------- +Tue Jul 8 13:11:57 UTC 2025 - Markéta Machová + +- Convert to libalternatives + +------------------------------------------------------------------- +Mon Jun 23 01:30:08 UTC 2025 - Steve Kowalik + +- Switch to pyproject macros. + +------------------------------------------------------------------- +Sat Jun 29 16:02:19 UTC 2024 - Dirk Müller + +- update to 2.2.0: + * Email addresses with internationalized local parts could, + with rare Unicode characters, be returned as valid but + actually be invalid in their normalized form (returned in the + `normalized` field). Local parts now re-validated after + Unicode NFC normalization to ensure that invalid characters + cannot be injected into the normalized address and that + characters with length-increasing NFC normalizations cannot + cause a local part to exceed the maximum length after + normalization. + * The length check for email addresses with internationalized + local parts is now also applied to the original address + string prior to Unicode NFC normalization, which may be + longer and could exceed the maximum email address length, to + protect callers who do not use the returned normalized + address. + * Improved error message for IDNA domains that are too long or + have invalid characters after Unicode normalization. + * A new option to parse `My Name ` strings, + i.e. a display name plus an email address in angle brackets, + is now available. It is off by default. + * Improvements to Python typing. + * Some additional tests added. + +------------------------------------------------------------------- +Wed Jun 19 07:08:36 UTC 2024 - Dirk Müller + +- update to 2.1.2: + * The domain name length limit is corrected from 255 to 253 + IDNA ASCII characters. I misread the RFCs. + * When a domain name has no MX record but does have an A or + AAAA record, if none of the IP addresses in the response are + globally reachable (i.e. not Private-Use, Loopback, etc.), + the response is treated as if there was no A/AAAA response + and the email address will fail the deliverability check. + * When a domain name has no MX record but does have an A or + AAAA record, the mx field in the object returned by + validate_email incorrectly held the IP addresses rather than + the domain itself. + * Fixes in tests. + +------------------------------------------------------------------- +Thu Jun 6 07:38:28 UTC 2024 - Dirk Müller + +- update to 2.1.1: + * Fixed typo 'marking' instead of 'marketing' in case- + insensitive mailbox name list. + * When DNS-based deliverability checks fail, in some cases + exceptions are now thrown with `raise ... from` for better + nested exception tracking. + * Fixed tests to work when no local resolver can be configured. + * This project is now licensed under the Unlicense (instead of + CC0). + * Minor improvements to tests. + * Minor improvements to code style. +- drop dont-require-resolv-tests.patch: obsolete + +------------------------------------------------------------------- +Thu Nov 16 10:02:55 UTC 2023 - Dirk Müller + +- update to 2.1.0: + * Python 3.8+ is now required (support for Python 3.7 was + dropped). + * The old `email` field on the returned `ValidatedEmail` + object, which in the previous version was superseded by + `normalized`, will now raise a deprecation warning if used. + See https://stackoverflow.com/q/879173 for strategies to + suppress the DeprecationWarning. + * A `__version__` module attribute is added. + * The email address argument to validate_email is now marked as + positional-only to better reflect the documented usage using + the new Python 3.8 feature. + +------------------------------------------------------------------- +Thu May 25 08:23:47 UTC 2023 - Daniel Garcia + +- Add dont-require-resolv-tests.patch to make tests run without an + existing /etc/resolv.conf file +- Update to 2.0.0: + This is a major update to the library, but since email address specs + haven't changed there should be no significant changes to which + email addresses are considered valid or invalid with default + options. There are new options for accepting unusual email addresses + that were previously always rejected, some changes to how DNS errors + are handled, many changes in error message text, and major internal + improvements including the addition of type annotations. Python 3.7+ + is now required. Details follow: + + * Python 2.x and 3.x versions through 3.6, and dnspython 1.x, are no + longer supported. Python 3.7+ with dnspython 2.x are now required. + * The dnspython package is no longer required if DNS checks are not + used, although it will install automatically. + * NoNameservers and NXDOMAIN DNS errors are now handled differently: + NoNameservers no longer fails validation, and NXDOMAIN now skips + checking for an A/AAAA fallback and goes straight to failing + validation. + * Some syntax error messages have changed because they are now + checked explicitly rather than as a part of other checks. + * The quoted-string local part syntax (e.g. multiple @-signs, + spaces, etc. if surrounded by quotes) and domain-literal addresses + (e.g. @[192.XXX...] or @[IPv6:...]) are now parsed but not + considered valid by default. Better error messages are now given + for these addresses since it can be confusing for a technically + valid address to be rejected, and new allow_quoted_local and + allow_domain_literal options are added to allow these addresses if + you really need them. + * Some other error messages have changed to not repeat the email + address in the error message. + * The email field on the returned ValidatedEmail object has been + renamed to normalized to be clearer about its importance, but + access via .email is also still supported. + * Some mailbox names like postmaster are now normalized to lowercase + per RFC 2142. + * The library has been reorganized internally into smaller modules. + * The tests have been reorganized and expanded. Deliverability tests + now mostly use captured DNS responses so they can be run off-line. + * The main tool now reads options to validate_email from environment + variables. + * Type annotations have been added to the exported methods and the + ValidatedEmail class and some internal methods. + * The old dict-like pattern for the return value of validate_email + is deprecated. + + Versions 2.0.0.post1 and 2.0.0.post2 corrected some packaging + issues. 2.0.0.post2 also added a check for an invalid combination of + arguments. + +------------------------------------------------------------------- +Thu May 25 07:18:27 UTC 2023 - Daniel Garcia + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Sat Jan 28 13:39:59 UTC 2023 - Dirk Müller + +- update to 1.3.1: + * The new SPF 'v=spf1 -all' (reject-all) deliverability check is removed + in most cases. It now is performed only for domains that do not have MX + records but do have an A/AAAA fallback record. + +------------------------------------------------------------------- +Tue Oct 4 08:06:34 UTC 2022 - Daniel Garcia + +- Update to 1.3.0: + * Deliverability checks now check for 'v=spf1 -all' SPF records as a way to reject more bad domains. + * Special use domain names now raise EmailSyntaxError instead of EmailUndeliverableError since they are performed even if check_deliverability is off. + * New module-level attributes are added to override the default values of the keyword arguments and the special-use domains list. + * The keyword arguments of the public methods are now marked as keyword-only. + * pyIsEmail's test cases are added to the tests. + * Recommend that check_deliverability be set to False for validation on login pages. + * Added an undocumented globally_deliverable option. + +------------------------------------------------------------------- +Thu Sep 8 07:24:18 UTC 2022 - Steve Kowalik + +- Update to 1.2.1: + * Rejecting domains with NULL MX records (when deliverability checks are + turned on). + * Rejecting unsafe unicode characters. (Some of these checks you should be + doing on all of your user inputs already!) + * Rejecting most special-use reserved domain names. A new test_environment + option is added for using @*.test domains. + * example and example.com/net/org are removed from the special-use domains + list. + * SPECIAL_USE_DOMAIN_NAMES is now a documented part of the API (and it is a + list instead of a tuple) + * New module-level attributes ALLOW_SMTPUTF8, CHECK_DELIVERABILITY, + TEST_ENVIRONMENT, and DEFAULT_TIMEOUT can be used to change the default + values of the keyword arguments. +- Add patch ignore-urllib3-pyopenssl-warning.patch: + * Ignore warning as error from requests-toolbelt via dnspython. + +------------------------------------------------------------------- +Tue Apr 19 17:42:44 UTC 2022 - Matej Cepl + +- Fix the name of the package (it should be email-validator, not + email_validator). + +------------------------------------------------------------------- +Mon Aug 16 09:14:16 UTC 2021 - Fusion Future + +- Update to 1.1.3: + * Add possibility to cache dns lookups (#58) + * Add py39 and setup_py to setup_cfg (#57) +- Changes from 1.1.2: + * Refactor: Main refactored, tests added for main (#52) + * Simplify email equality check into return statement (#51) + * Dedupe length reason logic and declare magic numbers as + constants (#50) + * Fix: ValidatedEmail is not JSON serializable (#49) + * Use dnspython's resolve method when available (#46) + * Package name should have a dash not an underscore + * Mention Punycode normalization, re-do fields as a table +- Drop fix-tests-strings.patch which is not needed. +- Move skipped tests to spec file, drop skip-tests-using-network.patch. + +------------------------------------------------------------------- +Thu Sep 17 11:02:14 UTC 2020 - Dirk Mueller + +- update to 1.1.1: + * Fix exception on DNS timeout + * Mention Punycode in the README + * Flake8 fixes + +------------------------------------------------------------------- +Tue May 26 06:34:06 UTC 2020 - Petr Gajdos + +- %python3_only -> %python_alternative + +------------------------------------------------------------------- +Mon May 11 07:38:24 UTC 2020 - Antonio Larrosa + +- Do not build python2 version +- Add patch to fix error messages being compared in tests to match + error messages in Leap/SLE: + * fix-tests-strings.patch + +------------------------------------------------------------------- +Thu May 7 12:03:47 UTC 2020 - Antonio Larrosa + +- version update to 1.1.0 + * no upstream changelog + +- version update to 1.0.5 + * no upstream changelog + +- Use pytest +- Add patch to skip tests that try to check MX records of domains: + * skip-tests-using-network.patch + +------------------------------------------------------------------- +Tue May 7 10:28:10 UTC 2019 - pgajdos@suse.com + +- version update to 1.0.4 + * no upstream changelog + +------------------------------------------------------------------- +Thu Mar 14 15:48:48 UTC 2019 - Tomáš Chvátal + +- Update to 1.0.3: + * metadata fixes + +------------------------------------------------------------------- +Tue Dec 4 12:47:37 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Wed Sep 6 16:48:08 UTC 2017 - toddrme2178@gmail.com + +- Initial version diff --git a/python-email-validator.spec b/python-email-validator.spec new file mode 100644 index 0000000..333e063 --- /dev/null +++ b/python-email-validator.spec @@ -0,0 +1,107 @@ +# +# spec file for package python-email-validator +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%if 0%{?suse_version} > 1500 +%bcond_without libalternatives +%else +%bcond_with libalternatives +%endif +%{?sle15_python_module_pythons} +Name: python-email-validator +Version: 2.3.0 +Release: 0 +Summary: A robust email syntax and deliverability validation library for Python +License: CC0-1.0 +URL: https://github.com/JoshData/python-email-validator +Source: https://github.com/JoshData/python-email-validator/archive/refs/tags/v%{version}.tar.gz#/email_validator-%{version}.tar.gz +# PATCH-FIX-OPENSUSE Ignore DeprecationWarning until requests-toolbelt is fixed +# (Pulled in by dnspython) +Patch0: ignore-urllib3-pyopenssl-warning.patch +BuildRequires: %{python_module base >= 3.8} +BuildRequires: %{python_module dnspython >= 1.15.0} +BuildRequires: %{python_module idna >= 2.0.0} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pytest >= 5.0} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-dnspython >= 1.15.0 +Requires: python-idna >= 2.0.0 +Provides: python-email_validator = %{version}-%{release} +Obsoletes: python-email_validator < %{version}-%{release} +BuildArch: noarch +%if %{with libalternatives} +BuildRequires: alts +Requires: alts +%else +Requires(post): update-alternatives +Requires(postun): update-alternatives +%endif +%python_subpackages + +%description +A robust email address syntax and deliverability validation library +for Python 2.7/3.4 by Joshua Tauberer. + +This library validates that address are of the form ``x@y.com``. This is +the sort of validation you would want for a login form on a website. + +Key features: + +* Good for validating email addresses used for logins/identity. +* Friendly error messages when validation fails (appropriate to show to end users). +* (optionally) Checks deliverability: Does the domain name resolve? +* Supports internationalized domain names and (optionally) internationalized local parts. +* Normalizes email addresses (super important for internationalized addresses! see below). + +%prep +%autosetup -p1 -n python-email-validator-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/email_validator +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +echo "nameserver 1.1.1.1" > resolv.conf +export RESOLV_FILE=$PWD/resolv.conf +# test_caching_dns_resolver fails when running with kvm +donttest="test_caching_dns_resolver" +%pytest tests -k "not ($donttest)" + +%pre +%python_libalternatives_reset_alternative email_validator + +%post +%python_install_alternative email_validator + +%postun +%python_uninstall_alternative email_validator + +%files %{python_files} +%license LICENSE +%doc README.md +%python_alternative %{_bindir}/email_validator +%{python_sitelib}/email_validator +%{python_sitelib}/email_validator-%{version}.dist-info + +%changelog