diff --git a/.gitignore b/.gitignore index 16bd058..45464ab 100644 --- a/.gitignore +++ b/.gitignore @@ -30,5 +30,15 @@ /OWSLib-0.27.2.tar.gz /OWSLib-0.28.0.tar.gz /OWSLib-0.28.1.tar.gz -/OWSLib-0.28.1-filtered.tar.zst -/OWSLib-0.28.1-filtered.tar.xz +/OWSLib-0.29.0.tar.gz +/OWSLib-0.29.1.tar.gz +/OWSLib-0.29.2.tar.gz +/OWSLib-0.29.3.tar.gz +/OWSLib-0.30.0.tar.gz +/OWSLib-0.30.0-filtered.tar.zst +/OWSLib-0.31.0-filtered.tar.zst +/OWSLib-0.32.0-filtered.tar.zst +/OWSLib-0.33.0-filtered.tar.zst +/OWSLib-0.34.0-filtered.tar.zst +/OWSLib-0.34.1-filtered.tar.zst +/OWSLib-0.35.0-filtered.tar.zst diff --git a/get_source b/get_source index e819a64..085fbb8 100755 --- a/get_source +++ b/get_source @@ -11,7 +11,7 @@ Usage: $1 VERSION Generate a source archive for OWSLib with questionably-licensed XML files in tests/resources/ removed. The result will be named -OWSLib-\${VERSION}-filtered.tar.xz and will be written into the current +OWSLib-\${VERSION}-filtered.tar.zst and will be written into the current working directory. EOF } @@ -31,7 +31,7 @@ VERSION="${1}" SOURCE0="${FORGEURL}/archive/${VERSION}/OWSLib-${VERSION}.tar.gz" TARNAME="$(basename "${SOURCE0}")" TARDIR="$(basename "${SOURCE0}" '.tar.gz')" -NEWTAR="${TARDIR}-filtered.tar.xz" +NEWTAR="${TARDIR}-filtered.tar.zst" SAVEDIR="${PWD}" XDIR="$(mktemp -d)" @@ -56,7 +56,7 @@ TZ=UTC LC_ALL=C tar \ --pax-option='delete=atime,delete=ctime' \ --clamp-mtime --mtime="@${MTIME}" \ "${TARDIR}/" | - xz -9 -e > "${NEWTAR}" + zstdmt --ultra -22 > "${NEWTAR}" touch -d @"${MTIME}" "${NEWTAR}" cd "${SAVEDIR}" diff --git a/python-OWSLib.rpmlintrc b/python-OWSLib.rpmlintrc index 981f880..694038d 100644 --- a/python-OWSLib.rpmlintrc +++ b/python-OWSLib.rpmlintrc @@ -1,2 +1,7 @@ -# All documentation is in the -doc subpackage. -addFilter(r" no-documentation$") +# The source cannot be a URL because we have to filter out files before +# uploading to the lookaside cache. +addFilter(r" invalid-url .* OWSLib-.*-filtered\.tar\.zst") +# There is nothing wrong with .tar.zst, but rpmlint does not know that. +addFilter(r" inconsistent-file-extension .*\.tar\.zst") +# Removed without replacement in Fedora 42 +addFilter(r" obsolete-not-provided python-OWSLIB-doc") diff --git a/python-OWSLib.spec b/python-OWSLib.spec index dd5e139..a44a326 100644 --- a/python-OWSLib.spec +++ b/python-OWSLib.spec @@ -1,15 +1,5 @@ -# Sphinx-generated HTML documentation is not suitable for packaging; see -# https://bugzilla.redhat.com/show_bug.cgi?id=2006555 for discussion. -# -# We can generate PDF documentation as a substitute. However, most of the -# necessary dependencies are not packaged for EPEL8 and probably never will be. -%bcond_with doc_pdf - -# Tests require pytest >= 3.8 but EPEL8 has 3.4.2. -%bcond_with tests - Name: python-OWSLib -Version: 0.28.1 +Version: 0.35.0 Release: %autorelease Summary: OGC Web Service utility library @@ -30,48 +20,32 @@ URL: https://geopython.github.io/OWSLib # We *could* use the PyPI sdist, which does not contain tests/resources/, but # it also does not contain any tests at all. We can still run some tests # without the XML files, and we would like to do so. -Source0: OWSLib-%{version}-filtered.tar.xz +Source0: OWSLib-%{version}-filtered.tar.zst Source1: get_source +BuildSystem: pyproject +BuildOption(install): -l owslib + BuildArch: noarch -BuildRequires: python%{python3_pkgversion}-devel - -# requirements.txt: -BuildRequires: python%{python3_pkgversion}-dateutil >= 1.5 -BuildRequires: python%{python3_pkgversion}-pytz -BuildRequires: python%{python3_pkgversion}-requests >= 1.0 -BuildRequires: python%{python3_pkgversion}-pyproj >= 2 -BuildRequires: python%{python3_pkgversion}-pyyaml -BuildRequires: python%{python3_pkgversion}-lxml -# python_version < '3.7': -BuildRequires: python%{python3_pkgversion}-dataclasses - -# requirements-dev.txt -# flake8 -# pytest-cov -# twine -# wheel -# coverage -# coveralls -# tox -%if %{with tests} -BuildRequires: python%{python3_pkgversion}-pytest >= 3.8 -%endif - -%if %{with doc_pdf} -BuildRequires: make -BuildRequires: python%{python3_pkgversion}-sphinx-latex -BuildRequires: latexmk -BuildRequires: pandoc -# requirements-dev.txt -BuildRequires: python%{python3_pkgversion}-sphinx -BuildRequires: python%{python3_pkgversion}-Pillow -BuildRequires: python%{python3_pkgversion}-nbsphinx -BuildRequires: python%{python3_pkgversion}-ipykernel -BuildRequires: python%{python3_pkgversion}-nbconvert -BuildRequires: python%{python3_pkgversion}-pandoc -%endif +# Tests; dependencies are in requirements-dev.txt. +BuildRequires: %{py3_dist pytest} +BuildRequires: %{py3_dist pytest_httpserver} +BuildRequires: %{py3_dist Pillow} +# We don’t have pytest-socket packaged, and we can get by without it. +# - pytest-socket +# We don’t use tox to run the tests. It would run "python3 setup.py develop", +# which is unwanted. +# - tox +# Unwanted linting/coverage dependencies: +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters +# - coverage +# - coveralls +# - flake8 +# - pytest-cov +# These are just for the maintainer to upload to PyPI. +# - build +# - twine %global common_description %{expand: OWSLib is a Python package for client programming with Open Geospatial @@ -86,61 +60,24 @@ numerous OGC Web Service interfaces.} %description %{common_description} -%package -n python%{python3_pkgversion}-OWSLib +%package -n python3-OWSLib Summary: %{summary} -%py_provides python%{python3_pkgversion}-OWSLib -%py_provides python%{python3_pkgversion}-owslib +%py_provides python3-owslib -%description -n python%{python3_pkgversion}-OWSLib %{common_description} +# The -doc subpackage was removed for Fedora 42; we can remove this Obsoletes +# after Fedora 44. (EPEL10 never had a -doc subpackage.) +Obsoletes: python-OWSLIB-doc < 0.32.0-1 + +%description -n python3-OWSLib %{common_description} -%package doc -Summary: Documentation and examples for OWSLib - -%description doc %{common_description} - -This package contains documentation and examples for OWSLib. - - -%prep -%autosetup -n OWSLib-%{version} - -%if %{with tests} +%prep -a # Don’t analyze/report test coverage -sed -r -i 's/[-]-cov[^[:blank:]]*[[:blank:]][^[[:blank:]]+//g' tox.ini -%endif - -# We don’t need shebangs in the examples. The pattern of selecting files -# before modifying them with sed keeps us from unnecessarily discarding the -# original mtimes on unmodified files. -find 'examples' -type f -name '*.py' \ - -exec gawk '/^#!/ { print FILENAME }; { nextfile }' '{}' '+' | - xargs -r sed -r -i '1{/^#!/d}' -# Some of them, but not all of them, were executable. -chmod -v a-x examples/*.py - -# Because at least one notebook requires Internet access, we must continue past -# notebook errors when building documentation. -echo 'nbsphinx_allow_errors = True' >> docs/conf.py +sed -r -i 's/^([[:blank:]]*)(--cov\b)/\1# \2/' tox.ini -%build -%py3_build - -%if %{with doc_pdf} -PYTHONPATH="${PWD}" %make_build -C docs latex \ - SPHINXOPTS='-j%{?_smp_build_ncpus}' -%make_build -C docs/build/latex/en LATEXMKOPTS='-quiet' -%endif - - -%install -%py3_install - - -%check -%if %{with tests} +%check -a # Otherwise, pytest finds the package twice in the Python path and complains. rm -rf owslib @@ -176,95 +113,30 @@ ignore="${ignore-} --ignore=tests/test_wps_getcapabilities_ceda.py" ignore="${ignore-} --ignore=tests/test_wps_getcapabilities_usgs.py" ignore="${ignore-} --ignore-glob=tests/test_wps_request*.py" ignore="${ignore-} --ignore-glob=tests/test_wps_response*.py" -# Not in 0.30.0: -k="${k-}${k+ and }not test_wmts_example_informatievlaanderen" +k="${k-}${k+ and }not test_metadata" +k="${k-}${k+ and }not test_responsibility" +k="${k-}${k+ and }not test_distributor" +k="${k-}${k+ and }not test_online_distribution" +k="${k-}${k+ and }not test_identification" +k="${k-}${k+ and }not test_identification_contact" +k="${k-}${k+ and }not test_identification_date" +k="${k-}${k+ and }not test_identification_extent" +k="${k-}${k+ and }not test_identification_keywords" +k="${k-}${k+ and }not test_get_all_contacts" +k="${k-}${k+ and }not test_aus" +k="${k-}${k+ and }not test_service" +k="${k-}${k+ and }not test_md_featurecataloguedesc" +k="${k-}${k+ and }not test_md_imagedescription" +k="${k-}${k+ and }not test_dq_dataquality" +k="${k-}${k+ and }not test_md_reference_system" +k="${k-}${k+ and }not test_service2" +k="${k-}${k+ and }not test_md_distribution" -PYTHONPATH='%{buildroot}%{python3_sitelib}' '%{python3}' -m pytest \ - -m 'not online' -k "${k-}" ${ignore-} -v -rs -%else -%{py3_check_import owslib - owslib - owslib.coverage - owslib.coverage.wcs100 - owslib.coverage.wcs110 - owslib.coverage.wcs111 - owslib.coverage.wcs200 - owslib.coverage.wcs201 - owslib.coverage.wcsBase - owslib.coverage.wcsdecoder - owslib.crs - owslib.csw - owslib.dif - owslib.etree - owslib.feature - owslib.feature.common - owslib.feature.postrequest - owslib.feature.schema - owslib.feature.wfs100 - owslib.feature.wfs110 - owslib.feature.wfs200 - owslib.fes - owslib.fgdc - owslib.gm03 - owslib.interfaces - owslib.iso - owslib.iso_che - owslib.map - owslib.map.common - owslib.map.wms111 - owslib.map.wms130 - owslib.namespaces - owslib.ogcapi - owslib.ogcapi.coverages - owslib.ogcapi.features - owslib.ogcapi.records - owslib.ows - owslib.owscontext - owslib.owscontext.atom - owslib.owscontext.common - owslib.owscontext.core - owslib.owscontext.geojson - owslib.sos - owslib.swe - owslib.swe.common - owslib.swe.observation - owslib.swe.observation.om - owslib.swe.observation.sos100 - owslib.swe.observation.sos200 - owslib.swe.observation.waterml2 - owslib.swe.sensor - owslib.swe.sensor.sml - owslib.tms - owslib.util - owslib.waterml - owslib.waterml.wml - owslib.waterml.wml10 - owslib.waterml.wml11 - owslib.wcs - owslib.wfs - owslib.wmc - owslib.wms - owslib.wmts - owslib.wps} -%endif +%pytest -m 'not online' -k "${k-}" ${ignore-} -v -rs -%files -n python%{python3_pkgversion}-OWSLib -%license LICENSE - -%{python3_sitelib}/owslib -%{python3_sitelib}/OWSLib-%{version}-py%{python3_version}.egg-info - - -%files doc -%license LICENSE -%doc AUTHORS.rst -%doc CHANGES.rst -%doc README.rst -%doc examples -%if %{with doc_pdf} -%doc docs/build/latex/en/OWSLib.pdf -%endif +%files -n python3-OWSLib -f %{pyproject_files} +%doc README.md %changelog diff --git a/sources b/sources index 9e7c211..da0ff49 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (OWSLib-0.28.1-filtered.tar.xz) = cc83e5973adb6d6bd5aa624017a6f7927957979f69a3dbdda1645c2ecb8b9b84bbb03b794440c7d66062d365400502a6176514f0fb8d51b8f06b1aea32c0284d +SHA512 (OWSLib-0.35.0-filtered.tar.zst) = be1eb52fa09049b720c1ebd476363e01c6442c9905c9adf0d35ccc11f39b228b9f3e64ed882a7c04987f2f38f9c8500a61aeef61e48a41602098ff22df0ed526