diff --git a/create-local-tld-cache.py b/create-local-tld-cache.py deleted file mode 100644 index c57a6c6..0000000 --- a/create-local-tld-cache.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/python3 - -from pathlib import Path -import json -import os -import subprocess -import sys - -if len(sys.argv) != 2: - sys.stderr.write('usage: %s \n' % sys.argv[0]) - -buildroot_sitelib_dir = sys.argv[1] -sys.path.insert(0, buildroot_sitelib_dir) - -from tldextract.cache import get_cache_dir, DiskCache - -if 'TLDEXTRACT_CACHE' not in os.environ: - raise ValueError('must set "TLDEXTRACT_CACHE" environment variable') - -local_cache = Path('/usr/share/publicsuffix/public_suffix_list.dat') -if not local_cache.exists(): - raise FileNotFoundError(local_cache) - -url_local_cache = f'file://{local_cache}' -subprocess.run(['/usr/bin/tldextract', '--update', f'--suffix_list_url={url_local_cache}'], check=True) - -cache = DiskCache(cache_dir=get_cache_dir()) -namespace = 'publicsuffix.org-tlds' -cache_with_local_data = cache._key_to_cachefile_path(namespace, {'urls': (url_local_cache,), 'fallback_to_snapshot': True}) -func = lambda **kwargs: json.loads(Path(cache_with_local_data).read_text()) - -kwargs = { - 'cache': cache, - 'urls': ('https://publicsuffix.org/list/public_suffix_list.dat', 'https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat'), - 'fallback_to_snapshot': True, -} -cache.run_and_cache(func, namespace=namespace, kwargs=kwargs, hashed_argnames=('urls', 'fallback_to_snapshot')) - diff --git a/disable-poetry-light.patch b/disable-poetry-light.patch deleted file mode 100644 index 1b71fb8..0000000 --- a/disable-poetry-light.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff -uNr lexicon-3.17.0/pyproject.toml lexicon-3.17.0.mod/pyproject.toml ---- lexicon-3.17.0/pyproject.toml 2023-11-06 16:21:46.000000000 -0600 -+++ lexicon-3.17.0.mod/pyproject.toml 2024-02-01 04:28:53.861285119 -0600 -@@ -61,32 +61,6 @@ - # Extra "full" list must contain all other extras - full = ["boto3", "localzone", "softlayer", "zeep", "oci"] - --[tool.poetry.group.dev.dependencies] --esbonio = "*" --packaging = "*" --pytest = "*" --pytest-cov = "*" --pytest-xdist = "*" --vcrpy = "*" --# We add flake8 conditionally to recent Python version to get modern versions --# of flake8 cleaned of several issues. It just means that linting cannot be done --# on the initial release of Python 3.8 (version 3.8.0). This is a decent constraint. --flake8 = { version = "*", python = ">=3.8.1" } --isort = "*" --tox = ">=4" --black = "*" --mypy = "*" --toml = "*" --types-PyYAML = "*" --types-pytz = "*" --types-requests = "*" --types-toml = "*" -- --[tool.poetry.group.docs.dependencies] --sphinx = "*" --sphinx_rtd_theme = "*" --toml = "*" -- - [tool.poetry.scripts] - lexicon = "lexicon._private.cli:main" - -diff -uNr lexicon-3.17.0/setup.cfg lexicon-3.17.0.mod/setup.cfg ---- lexicon-3.17.0/setup.cfg 2023-11-06 16:21:46.000000000 -0600 -+++ lexicon-3.17.0.mod/setup.cfg 2024-02-01 04:05:39.191101574 -0600 -@@ -5,45 +5,3 @@ - [tox:tox] - envlist = cover,lint,mypy - isolated_build = true -- --# Standard env will run all test available for all providers. --[testenv] --allowlist_externals = poetry --extras = -- full --setenv = -- PYTEST_ADDOPTS = {env:PYTEST_ADDOPTS:--numprocesses auto} -- PYTHONHASHSEED = 0 --commands_pre = -- poetry install --extras full --no-root --sync --commands = -- poetry run pytest tests/ \ -- --junitxml=junit/test-results.xml --dist=loadfile -- --# Cover env will run all test available for all providers with coverage enabled. --[testenv:cover] --commands = -- poetry run pytest tests/ \ -- --junitxml=junit/test-results.xml --dist=loadfile \ -- --cov=lexicon --cov-report=term-missing --cov-report=xml -- --# Light env will run all tests except for providers with optional dependencies. --[testenv:light] --extras = --commands_pre = -- poetry install --no-root --sync --commands = -- poetry run pytest tests/ \ -- --junitxml=junit/test-results.xml --dist=loadfile \ -- --xfail-providers-with-missing-deps -- --# Lint env will check for code quality and errors, and fails if it does not match the minimal requirements. --[testenv:lint] --commands = -- poetry run flake8 src tests -- -- --# Mypy env will check for types in the Lexicon codebase. --[testenv:mypy] --commands = -- poetry run mypy src tests diff --git a/python-dns-lexicon-tox-config.patch b/python-dns-lexicon-tox-config.patch deleted file mode 100644 index 039c798..0000000 --- a/python-dns-lexicon-tox-config.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/pyproject.toml b/pyproject.toml -index 4122ff9..936bbdc 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -126,8 +126,7 @@ extend-ignore = [ "E203", "E501" ] - envlist = [ "cover", "lint" , "mypy" ] - - [tool.tox.env_run_base] --runner = "uv-venv-lock-runner" --with_dev = true -+with_dev = false - extras = [ "full" ] - setenv.PYTEST_ADDOPTS = "--numprocesses auto" - setenv.PYTHONHASHSEED = "0" diff --git a/python-dns-lexicon.spec b/python-dns-lexicon.spec index de3d1f0..689aec4 100644 --- a/python-dns-lexicon.spec +++ b/python-dns-lexicon.spec @@ -1,14 +1,13 @@ -%global forgeurl https://github.com/dns-lexicon/dns-lexicon -%global forgeversion 3.21.1 -Version: %{forgeversion} +%global forgeurl https://github.com/AnalogJ/lexicon +Version: 3.17.0 %forgemeta %global pypi_name dns-lexicon %if 0%{?rhel} >= 8 # EPEL is currently missing dependencies used by the extras metapackages -# EPEL is currently missing dependencies used by the tests +# EPEL is currently missing dependancies used by the tests %bcond_with tests %bcond_with extras %else @@ -16,35 +15,22 @@ Version: %{forgeversion} %bcond_without extras %endif -# disable tests for now -%bcond_without tests - Name: python-%{pypi_name} -Release: 5%{?dist} +Release: 3%{?dist} Summary: Manipulate DNS records on various DNS providers in a standardized/agnostic way License: MIT URL: %{forgeurl} # pypi releases don't contain necessary data to run the tests Source0: %{forgesource} -Source1: create-local-tld-cache.py -Patch: python-dns-lexicon-tox-config.patch BuildArch: noarch BuildRequires: python3-devel -# epel is missing full poetry and light packages needed for tests -%if 0%{?rhel >= 8} -#Patch: disable-poetry-light.patch -%endif - # required to run the test suite %if %{with tests} BuildRequires: python3-pytest BuildRequires: python3-pytest-vcr -BuildRequires: python3-pytest-xdist -BuildRequires: publicsuffix-list -BuildRequires: python3-tldextract %endif @@ -143,16 +129,15 @@ dependencies necessary to use the Route 53 provider. %prep -%autosetup -n %{pypi_name}-%{version} -p1 +%autosetup -n lexicon-%{version} -p1 # Remove bundled egg-info rm -rf %{pypi_name}.egg-info -rm -f uv.lock %generate_buildrequires %if %{with extras} %pyproject_buildrequires -r -t -e light -x gransy,localzone,oci,route53 %else -%pyproject_buildrequires -r +%pyproject_buildrequires -r -t -e light %endif @@ -163,32 +148,30 @@ sed -i '1d' src/lexicon/_private/cli.py %if %{with tests} %check -export TLDEXTRACT_CACHE=%{_builddir}/tldextract-cache - -# tldextract tries to fetch "public_suffix_list.dat" from the internet on first -# invocation. +# The following tests use tldextract which tries to fetch +# https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat +# on first invocation # (see https://github.com/john-kurkowski/tldextract/tree/master#note-about-caching) -# The "publicsuffix-list" package provides that data however we need to use -# that to populate a local cache directory.Most of the work is done via: -# $ tldextract --update --suffix_list_url "file:///usr/share/publicsuffix/public_suffix_list.dat" -# -# However tldextract uses the "file://" url as cache key while the tests use -# "https://publicsuffix.org/list/public_suffix_list.dat". I did not find a way -# get tldextract to use the https url so a small Python script will handle that. -/usr/bin/python3 %{SOURCE1} %{buildroot}%{python3_sitelib} +# - AutoProviderTests +# - NamecheapProviderTests +# - NamecheapManagedProviderTests +# Disabling those until tldextract 3.3.0+ is available on Fedora. +# With tldextract 3.3.0+ we can use Fedora's public suffix list by running +# tldextract --update --suffix_list_url "file:///usr/share/publicsuffix/public_suffix_list.dat" +# prior to running the tests +TEST_SELECTOR="not AutoProviderTests and not NamecheapProviderTests and not NamecheapManagedProviderTests and not Route53Provider and not AliyunProviderTests and not AuroraProviderTests and not Route53ProviderTests" # lexicon providers which do not work in Fedora due to missing dependencies: # - SoftLayerProviderTests -TEST_SELECTOR="not SoftLayerProviderTests" - +TEST_SELECTOR+=" and not SoftLayerProviderTests" %if %{without extras} -TEST_SELECTOR+=" and not GransyProviderTests and not LocalzoneProviderTests and not OciProviderTests and not OciInstancePrincipalProviderTests and not Route53ProviderTests" +TEST_SELECTOR+=" and not DDNSProviderTests and not DuckdnsProviderTests and not GransyProviderTests and not LocalzoneProviderTests and not OciProviderTests and not OciInstancePrincipalProviderTests and not Route53ProviderTests" %endif - -# We do not use "--xfail-providers-with-missing-deps" because we want to detect -# missing dependencies unless we already know that a certain provider will not -# work. -%pytest -v -k "${TEST_SELECTOR}" -n auto --dist=loadfile tests/ +# The %%tox macro lacks features so we need to use pytest directly: +# Miro HronĨok, 2020-09-11: +# > I am afraid the %%tox macro can only work with "static" deps declaration, +# > not with arbitrary installers invoked as commands, sorry about that. +%pytest -v -k "${TEST_SELECTOR}" %endif %install @@ -196,6 +179,7 @@ TEST_SELECTOR+=" and not GransyProviderTests and not LocalzoneProviderTests and install -pm 0755 %{buildroot}/%{_bindir}/lexicon %{buildroot}/%{_bindir}/lexicon-%{python3_version} cd %{buildroot}/%{_bindir} ln -s lexicon-%{python3_version} lexicon-3 +rm -rf %{buildroot}%{python3_sitelib}/lexicon/tests %files -n python3-%{pypi_name} @@ -227,42 +211,6 @@ ln -s lexicon-%{python3_version} lexicon-3 # }}} %changelog -* Fri Sep 19 2025 Python Maint - 3.21.1-5 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 3.21.1-4 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Fri Jul 25 2025 Fedora Release Engineering - 3.21.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jun 06 2025 Python Maint - 3.21.1-2 -- Rebuilt for Python 3.14 - -* Mon Apr 28 2025 Felix Schwarz - 3.21.1-1 -- update to 3.21.1 - -* Sat Apr 19 2025 Felix Schwarz - 3.21.0-1 -- update to 3.21.0 - -* Thu Jan 23 2025 Felix Schwarz - 3.20.1-1 -- update to 3.20.1 - -* Sat Jan 18 2025 Fedora Release Engineering - 3.18.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sat Nov 23 2024 Ben Maconi - 3.18.0-1 -- Updated to 3.18.0 - -* Fri Jul 19 2024 Fedora Release Engineering - 3.17.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jun 27 2024 Python Maint - 3.17.0-5 -- Rebuilt for Python 3.13 - -* Thu Feb 29 2024 Jonathan Wright - 3.17.0-4 -- Update spec for building on epel9 - * Fri Jan 26 2024 Fedora Release Engineering - 3.17.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/sources b/sources index 490f57d..31f2a59 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (dns-lexicon-3.21.1.tar.gz) = 0f53001edf2425afe7b7c4315e974ee47c956b659964998b942943788711c57634eea2d7974e21005be7f0edf16800e6577c49c8789e34f2133c4f5be8ac7ac1 +SHA512 (lexicon-3.17.0.tar.gz) = 1bc182f5881d6acfac72b84331ba50da1219178d274c92e532ed11e73aa79696681d28a002cd1e23f48590953f48e50b62c2ef2db020a07ecf88547717508c0c