From 119fe091626a50f919297cfb57fb8127b7d5959b3b3cff933b478cb9ca5ffeb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 3 May 2024 20:34:10 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main python-email-validator revision 2cc59c58316eec294729f3846508ee88 --- .gitattributes | 23 ++++ dont-require-resolv-tests.patch | 59 ++++++++ email_validator-2.0.0.tar.gz | 3 + ignore-urllib3-pyopenssl-warning.patch | 11 ++ python-email-validator.changes | 178 +++++++++++++++++++++++++ python-email-validator.spec | 95 +++++++++++++ 6 files changed, 369 insertions(+) create mode 100644 .gitattributes create mode 100644 dont-require-resolv-tests.patch create mode 100644 email_validator-2.0.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/dont-require-resolv-tests.patch b/dont-require-resolv-tests.patch new file mode 100644 index 0000000..45efa13 --- /dev/null +++ b/dont-require-resolv-tests.patch @@ -0,0 +1,59 @@ +Index: python-email-validator-2.0.0/email_validator/deliverability.py +=================================================================== +--- python-email-validator-2.0.0.orig/email_validator/deliverability.py ++++ python-email-validator-2.0.0/email_validator/deliverability.py +@@ -6,11 +6,11 @@ import dns.resolver + import dns.exception + + +-def caching_resolver(*, timeout: Optional[int] = None, cache=None): ++def caching_resolver(*, timeout: Optional[int] = None, cache=None, resolv=None): + if timeout is None: + from . import DEFAULT_TIMEOUT + timeout = DEFAULT_TIMEOUT +- resolver = dns.resolver.Resolver() ++ resolver = dns.resolver.Resolver(filename=resolv or '/etc/resolv.conf') + resolver.cache = cache or dns.resolver.LRUCache() # type: ignore + resolver.lifetime = timeout # type: ignore # timeout, in seconds + return resolver +Index: python-email-validator-2.0.0/tests/mocked_dns_response.py +=================================================================== +--- python-email-validator-2.0.0.orig/tests/mocked_dns_response.py ++++ python-email-validator-2.0.0/tests/mocked_dns_response.py +@@ -1,5 +1,6 @@ + import dns.resolver + import json ++import os + import os.path + import pytest + +@@ -32,7 +33,8 @@ class MockedDnsResponseData: + + # Return a new dns.resolver.Resolver configured for caching + # using the singleton instance. +- return caching_resolver(cache=MockedDnsResponseData.INSTANCE) ++ return caching_resolver(cache=MockedDnsResponseData.INSTANCE, ++ resolv=os.environ.get('RESOLV_FILE')) + + def __init__(self): + self.data = {} +Index: python-email-validator-2.0.0/tests/test_deliverability.py +=================================================================== +--- python-email-validator-2.0.0.orig/tests/test_deliverability.py ++++ python-email-validator-2.0.0/tests/test_deliverability.py +@@ -1,5 +1,6 @@ + import pytest + import re ++import os + + from email_validator import EmailUndeliverableError, \ + validate_email, caching_resolver +@@ -73,7 +74,7 @@ def test_caching_dns_resolver(): + self.cache[key] = value + + cache = TestCache() +- resolver = caching_resolver(timeout=1, cache=cache) ++ resolver = caching_resolver(timeout=1, cache=cache, resolv=os.environ.get('RESOLV_FILE')) + validate_email("test@gmail.com", dns_resolver=resolver) + assert len(cache.cache) == 1 + diff --git a/email_validator-2.0.0.tar.gz b/email_validator-2.0.0.tar.gz new file mode 100644 index 0000000..b166b8f --- /dev/null +++ b/email_validator-2.0.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cd656b4c2cba10bcb518808f800bdde74af0c01a2522a9d475b3b1954d98f01 +size 39142 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..90afade --- /dev/null +++ b/python-email-validator.changes @@ -0,0 +1,178 @@ +------------------------------------------------------------------- +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..394bd15 --- /dev/null +++ b/python-email-validator.spec @@ -0,0 +1,95 @@ +# +# spec file for package python-email-validator +# +# Copyright (c) 2023 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/ +# + + +%{?sle15_python_module_pythons} +%define skip_python2 1 +Name: python-email-validator +Version: 2.0.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 +# PATCH-FIX-OPENSUSE do not require /etc/resolv.conf for testing +Patch1: dont-require-resolv-tests.patch +BuildRequires: %{python_module dnspython >= 1.15.0} +BuildRequires: %{python_module idna >= 2.0.0} +BuildRequires: %{python_module pytest >= 5.0} +BuildRequires: %{python_module setuptools} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-dnspython >= 1.15.0 +Requires: python-idna >= 2.0.0 +Requires: python-setuptools +Requires(post): update-alternatives +Requires(postun):update-alternatives +Provides: python-email_validator = %{version}-%{release} +Obsoletes: python-email_validator < %{version}-%{release} +BuildArch: noarch +%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 +%python_build + +%install +%python_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)" + +%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}*-info + +%changelog