Compare commits

...
Sign in to create a new pull request.

13 commits

Author SHA1 Message Date
Benjamin A. Beasley
9b833bff57 Omit test data files with unclear license status 2024-11-13 11:14:59 -05:00
Benjamin A. Beasley
fd2014ec9e Update Summary from upstream 2024-11-13 11:11:44 -05:00
Benjamin A. Beasley
957b30f912 Add an rpmlintrc file
[skip changelog]
2024-11-13 11:11:40 -05:00
Benjamin A. Beasley
e4bfed3048 Assert that %pyproject_files contains a license file 2024-11-13 11:11:16 -05:00
Benjamin A. Beasley
50c359be7f Use new (rpm 4.17.1+) bcond style 2024-11-13 11:11:09 -05:00
Benjamin A. Beasley
58daffda35 Shorten a long line by using a macro
[skip changelog]
2024-11-13 11:10:02 -05:00
Benjamin A. Beasley
50d60485c8 Do not number the sole Source
[skip changelog]
2024-11-13 11:09:48 -05:00
Benjamin A. Beasley
4f7710c077 Don’t assume %_smp_mflags is -j%_smp_build_ncpus 2024-11-13 11:09:38 -05:00
Benjamin A. Beasley
efa3eb4f30 Move some text doc files to the -doc subpackage 2024-11-13 11:09:35 -05:00
Benjamin A. Beasley
f35d034de6 Update to 0.28.1 (close RHBZ#2173195) 2023-02-25 09:36:50 -05:00
Benjamin A. Beasley
08da30ae5c Update to 0.28.0 (close RHBZ#2171409) 2023-02-20 13:05:20 -05:00
Benjamin A. Beasley
90ff95b3fa Drop default argument -r for pyproject_buildrequires 2023-02-20 13:05:18 -05:00
Benjamin A. Beasley
cc700e9b9b Initial package for EPEL9
- Disabled PDF documentation due to missing dependencies
2022-11-16 08:07:16 -05:00
5 changed files with 135 additions and 45 deletions

3
.gitignore vendored
View file

@ -28,3 +28,6 @@
/OWSLib-0.25.0.tar.gz
/OWSLib-0.26.0.tar.gz
/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

63
get_source Executable file
View file

@ -0,0 +1,63 @@
#!/bin/sh
set -o nounset
set -o errexit
FORGEURL='https://github.com/geopython/OWSLib'
print_help()
{
cat <<EOF
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.zst and will be written into the current
working directory.
EOF
}
if [ "$#" != '1' ]
then
exec 1>&2
print_help "${0}"
exit 1
elif [ "${1-}" = '-h' ] || [ "${1-}" = '--help' ]
then
print_help "${0}"
exit 0
fi
VERSION="${1}"
SOURCE0="${FORGEURL}/archive/${VERSION}/OWSLib-${VERSION}.tar.gz"
TARNAME="$(basename "${SOURCE0}")"
TARDIR="$(basename "${SOURCE0}" '.tar.gz')"
NEWTAR="${TARDIR}-filtered.tar.zst"
SAVEDIR="${PWD}"
XDIR="$(mktemp -d)"
trap "rm -rf '${XDIR}'" INT TERM EXIT
cd "${XDIR}"
curl -L -O "${SOURCE0}"
echo "Extracting ${TARNAME}…" 1>&2
tar -xzf "${TARNAME}"
MTIME="$(stat -c '%Y' "${TARDIR}")"
rm -rvf "${TARDIR}/tests/resources"
echo "Re-compressing as ${NEWTAR}…" 1>&2
# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html
# We reset all mtimes to that of the top-level extracted directory; since git
# archives dont have meaningful per-file mtimes, nothing useful is lost.
TZ=UTC LC_ALL=C tar \
--create \
--sort=name \
--format=posix \
--numeric-owner --owner=0 --group=0 \
--mode=go+u,go-w \
--pax-option='delete=atime,delete=ctime' \
--clamp-mtime --mtime="@${MTIME}" \
"${TARDIR}/" |
zstdmt --ultra -22 > "${NEWTAR}"
touch -d @"${MTIME}" "${NEWTAR}"
cd "${SAVEDIR}"
mv -v "${XDIR}/${NEWTAR}" .

2
python-OWSLib.rpmlintrc Normal file
View file

@ -0,0 +1,2 @@
# All documentation is in the -doc subpackage.
addFilter(r" no-documentation$")

View file

@ -1,17 +1,37 @@
# 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.
%bcond_without doc_pdf
# We can generate PDF documentation as a substitute. However, EPEL9 is
# currently missing some documentation dependencies:
# - python-ipykernel
# - python-nbconvert
# - python-nbsphinx
%bcond doc_pdf 0
Name: python-OWSLib
Version: 0.27.2
Version: 0.28.1
Release: %autorelease
Summary: Client library for OGC web services
Summary: OGC Web Service utility library
License: BSD-3-Clause
URL: https://geopython.github.io/OWSLib
Source0: https://github.com/geopython/OWSLib/archive/%{version}/OWSLib-%{version}.tar.gz
# A filtered source archive, obtained by (see Source1):
#
# ./get_source %%{version}
#
# is required because tests/resources/ contains XML data files that appear to
# have been pulled from various GIS databases, and the license terms for these
# files are unclear.
#
# The unfiltered base source URL would be:
#
# https://github.com/geopython/OWSLib/archive/%%{version}/OWSLib-%%{version}.tar.gz
#
# 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.zst
Source1: get_source
BuildArch: noarch
@ -86,72 +106,74 @@ echo 'nbsphinx_allow_errors = True' >> docs/conf.py
%generate_buildrequires
%pyproject_buildrequires -r requirements-dev-filtered.txt
%pyproject_buildrequires requirements-dev-filtered.txt
%build
%pyproject_wheel
%if %{with doc_pdf}
PYTHONPATH="${PWD}" %make_build -C docs latex SPHINXOPTS='%{?_smp_mflags}'
PYTHONPATH="${PWD}" %make_build -C docs latex \
SPHINXOPTS='-j%{?_smp_build_ncpus}'
%make_build -C docs/build/latex/en LATEXMKOPTS='-quiet'
%endif
%install
%pyproject_install
%pyproject_save_files owslib
%pyproject_save_files -l owslib
%check
# Otherwise, pytest finds the package twice in the Python path and complains.
rm -rf owslib
# There is a convenient “online” mark for deselecting tests that require
# Internet access, but we still have to manually deselect doctests that try to
# make network requests.
k="${k-}${k+ and }not wms_geoserver_mass_gis.txt"
k="${k-}${k+ and }not wfs_MapServerWFSFeature.txt"
k="${k-}${k+ and }not wfs_MapServerWFSCapabilities.txt"
k="${k-}${k+ and }not wfs2_storedqueries.txt"
k="${k-}${k+ and }not wfs1_generic.txt"
k="${k-}${k+ and }not wcs_thredds.txt"
# These require test data files from tests/resources/, which we have removed:
ignore="${ignore-} --ignore-glob=tests/doctests/*.txt"
k="${k-}${k+ and }not test_gm03"
ignore="${ignore-} --ignore=tests/test_iso_parsing.py"
ignore="${ignore-} --ignore=tests/test_ows_interfaces.py"
ignore="${ignore-} --ignore=tests/test_owscontext_atomxml.py"
k="${k-}${k+ and }not test_decode_single_json"
k="${k-}${k+ and }not test_load_parse"
k="${k-}${k+ and }not test_decode_full_json"
k="${k-}${k+ and }not test_load_bulk"
ignore="${ignore-} --ignore=tests/test_remote_metadata.py"
k="${k-}${k+ and }not TestOffline"
ignore="${ignore-} --ignore=tests/test_wfs_generic.py"
ignore="${ignore-} --ignore=tests/test_wms_datageo_130.py"
ignore="${ignore-} --ignore=tests/test_wms_jpl_capabilities.py"
k="${k-}${k+ and }not test_wps_getOperationByName"
k="${k-}${k+ and }not test_wps_checkStatus"
k="${k-}${k+ and }not test_wps_process_representation"
k="${k-}${k+ and }not test_wps_process_properties"
k="${k-}${k+ and }not test_wps_literal_data_input_parsing_references"
k="${k-}${k+ and }not test_wps_response_with_lineage"
ignore="${ignore-} --ignore=tests/test_wps_describeprocess_bbox.py"
ignore="${ignore-} --ignore=tests/test_wps_describeprocess_ceda.py"
ignore="${ignore-} --ignore=tests/test_wps_describeprocess_emu_all.py"
ignore="${ignore-} --ignore=tests/test_wps_describeprocess_usgs.py"
ignore="${ignore-} --ignore=tests/test_wps_execute.py"
ignore="${ignore-} --ignore=tests/test_wps_execute_invalid_request.py"
ignore="${ignore-} --ignore=tests/test_wps_getcapabilities_52n.py"
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"
# This is a trivial error where the representation of the expected TypeError
# has changed over time:
# Differences (unified diff with -expected +actual):
# @@ -1,3 +1,6 @@
# Traceback (most recent call last):
# -...
# -TypeError: get_namespace() ...
# + File "/usr/lib64/python3.10/doctest.py", line 1346, in __run
# + exec(compile(example.source, filename, "single",
# + File "<doctest namespaces.txt[15]>", line 1, in <module>
# + ns.get_namespace()
# +TypeError: Namespaces.get_namespace() missing 1 required positional argument: 'key'
k="${k-}${k+ and }not namespaces.txt"
# Unknown problem—check if it is fixed in a later version:
k="${k-}${k+ and } not (TestOffline and test_wfs_110_remotemd_parse_all)"
k="${k-}${k+ and } not (TestOffline and test_wfs_110_remotemd_parse_single)"
k="${k-}${k+ and } not (TestOffline and test_wfs_200_remotemd_parse_all)"
k="${k-}${k+ and } not (TestOffline and test_wfs_200_remotemd_parse_single)"
k="${k-}${k+ and } not (TestOffline and test_wms_130_remotemd_parse_all)"
k="${k-}${k+ and } not (TestOffline and test_wms_130_remotemd_parse_single)"
%pytest -m 'not online' -k "${k-}"
%pytest -m 'not online' -k "${k-}" ${ignore-} -v -rs
%files -n python3-OWSLib -f %{pyproject_files}
# pyproject_files handles LICENSE; verify with “rpm -qL -p …”
%doc AUTHORS.rst
%doc CHANGES.rst
%doc README.rst
%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

View file

@ -1 +1 @@
SHA512 (OWSLib-0.27.2.tar.gz) = 02c70731ef92783d53b8f0dff2cec7d28d14ac08b0a4b5090183f9eacf156d539c823fcd2ae480c07447e901697de498cdf2aaf27c8b6d46fa4cf8eb3679ceee
SHA512 (OWSLib-0.28.1-filtered.tar.zst) = b32734fb953612e617ab28387ae55c349b8ce119454c712e7c425322d952895031c0fb15f6614a17bb34e7588cd5f90ccfcb2cc1eba1a719c569d3ae4eb44684