Compare commits

..

99 commits

Author SHA1 Message Date
Benjamin A. Beasley
1958d8a0f4 Update to 0.35.0 (close RHBZ#2406840) 2025-10-28 21:37:31 +00:00
Benjamin A. Beasley
f5e3a97e3a Update to 0.34.1 2025-10-28 21:27:09 +00:00
Python Maint
529c86e79e Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 13:55:22 +02:00
Python Maint
17440b316f Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 14:19:00 +02:00
Fedora Release Engineering
49af8de6ee Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 06:26:40 +00:00
Python Maint
cf30edef34 Rebuilt for Python 3.14 2025-06-03 16:24:10 +02:00
Benjamin A. Beasley
9d57933e43 Update to 0.34.0 (close RHBZ#2369733) 2025-06-02 06:29:46 -04:00
Benjamin A. Beasley
10c89a527a Update .rpmlintrc for current rpmlint 2025-06-02 06:29:46 -04:00
Benjamin A. Beasley
8ae1e62c6e Use the provisional pyproject declarative buildsystem 2025-03-20 06:25:47 -04:00
Benjamin A. Beasley
03dd0e4fd9 Drop conditionals for EPEL10 and let the branches diverge 2025-03-20 06:24:37 -04:00
Benjamin A. Beasley
cb73aee3e1 Update the .rpmlintrc file 2025-03-20 06:24:37 -04:00
Benjamin A. Beasley
432bc43af7 Update to 0.33.0 (close RHBZ#2353440)
- Drop the -doc subpackage (PDF docs and examples) for simplicity
2025-03-19 22:55:13 -04:00
Fedora Release Engineering
7d9cdc5c0c Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-18 11:24:58 +00:00
Benjamin A. Beasley
77268f146c Update to 0.32.0 (close RHBZ#2321522) 2024-11-13 08:04:19 -05:00
Benjamin A. Beasley
2d22a37a13 Update to 0.31.0 2024-11-13 07:49:10 -05:00
Benjamin A. Beasley
b4b4a14cac Omit test data files with unclear license status 2024-11-13 07:43:30 -05:00
Benjamin A. Beasley
9c24b75338 Add a conditional to build in EPEL10 (without PDF docs for now) 2024-10-31 14:16:51 -04:00
Fedora Release Engineering
6291141344 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-19 09:03:03 +00:00
Python Maint
e11a9f7fef Rebuilt for Python 3.13 2024-06-09 23:16:08 +02:00
Benjamin A. Beasley
fae6a7be6b Update to 0.30.0 (close RHBZ#2268924) 2024-03-20 15:12:31 -04:00
Benjamin A. Beasley
35ad88bc26 Update Summary from upstream 2024-03-20 15:12:02 -04:00
Benjamin A. Beasley
9d70a9f1be Add an rpmlintrc file
[skip changelog]
2024-03-20 15:10:56 -04:00
Fedora Release Engineering
3b53456ad5 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-26 00:46:54 +00:00
Fedora Release Engineering
39a3bd44c3 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-21 22:54:04 +00:00
Benjamin A. Beasley
f0f0c094e0 Assert that %pyproject_files contains a license file 2023-12-18 13:03:08 -05:00
Benjamin A. Beasley
eaa706c786 Update to 0.29.3 (close RHBZ#2248215) 2023-11-06 19:49:11 -05:00
Fedora Release Engineering
4f39d6da1f Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-21 06:53:16 +00:00
Python Maint
4dda1c74f7 Rebuilt for Python 3.12 2023-07-03 16:11:40 +02:00
Benjamin A. Beasley
f31fd3f016 Use new (rpm 4.17.1+) bcond style 2023-06-20 09:26:38 -04:00
Benjamin A. Beasley
d4c832e6eb Shorten a long line by using a macro
[skip changelog]
2023-05-28 13:04:49 -04:00
Benjamin A. Beasley
b7d7beed79 Do not number the sole Source
[skip changelog]
2023-05-28 13:04:15 -04:00
Benjamin A. Beasley
27e1330084 Update to 0.29.2 (close RHBZ#2208756) 2023-05-21 11:03:24 -04:00
Benjamin A. Beasley
7f520d5f97 Update to 0.29.1 (close RHBZ#2186365) 2023-04-13 12:58:32 -04:00
Benjamin A. Beasley
a0f319e0f2 Update to 0.29.0 (close RHBZ#2185445) 2023-04-09 10:53:47 -04:00
Benjamin A. Beasley
07adcbdc08 Don’t assume %_smp_mflags is -j%_smp_build_ncpus 2023-03-18 08:41:52 -04:00
Benjamin A. Beasley
4435cdb29f Move some text doc files to the -doc subpackage 2023-03-08 09:38:35 -05:00
Benjamin A. Beasley
9bf44c00c7 Update to 0.28.1 (close RHBZ#2173195) 2023-02-24 14:44:13 -05:00
Benjamin A. Beasley
772f65c2b6 Update to 0.28.0 (close RHBZ#2171409) 2023-02-20 09:52:36 -05:00
Fedora Release Engineering
b165e7b986 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-20 10:48:45 +00:00
Benjamin A. Beasley
10b6dd1b03 Drop default argument -r for pyproject_buildrequires 2022-11-30 11:43:57 -05:00
Benjamin A. Beasley
c41613d35d Drop some doc BR’s when PDF docs are disabled 2022-11-16 07:50:14 -05:00
Benjamin A. Beasley
336ab0ae18 Update to 0.27.2 (close RHBZ#2122000) 2022-08-28 09:39:41 -04:00
Benjamin A. Beasley
6a7628cc72 Update License to SPDX 2022-08-28 09:39:41 -04:00
Fedora Release Engineering
d52c0e7eb6 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-22 15:57:21 +00:00
Benjamin A. Beasley
da6b2b5bab Fix a typo in a spec file comment 2022-07-11 08:49:54 -04:00
Benjamin A. Beasley
8168588215 Fix extra newline in description 2022-07-07 17:14:43 -04:00
Python Maint
375e68f204 Rebuilt for Python 3.11 2022-06-21 18:35:05 +02:00
Benjamin A. Beasley
cb063a5dda Update to 0.26.0 (close RHBZ#2095806) 2022-06-10 14:18:16 -04:00
Fedora Release Engineering
020425199c - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-21 09:57:56 +00:00
Benjamin A. Beasley
887961bb61 Add Provides for python3-owslib 2021-12-23 11:53:38 -05:00
Benjamin A. Beasley
f0ab838f83 Don’t generate BuildRequires on twine 2021-12-23 09:37:27 -05:00
Benjamin A. Beasley
3b6e91247e Update to 0.25.0 (close RHBZ#1918539) 2021-12-21 21:42:44 -05:00
Benjamin A. Beasley
dbc7458fbf Modernize packaging; run tests; add -doc subpackage 2021-12-21 08:10:26 -05:00
Benjamin A. Beasley
f035bbbe5a Opt in to rpmautospec 2021-12-20 00:53:53 -05:00
Fedora Release Engineering
0483ceaeb9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 04:35:31 +00:00
Python Maint
8d9518cc32 Rebuilt for Python 3.10 2021-06-04 20:49:35 +02:00
Fedora Release Engineering
ff4243605d - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 09:01:49 +00:00
Volker Fröhlich
8384c0bb27 New upstream release 0.21.0 2020-12-09 08:30:51 +01:00
Fedora Release Engineering
9976e407c6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-28 23:27:33 +00:00
Volker Fröhlich
a2e2bb682e New version 0.20.0, resolve BZ#1813049 2020-06-05 14:47:24 +02:00
Miro Hrončok
4d2b81e132 Rebuilt for Python 3.9 2020-05-26 02:59:15 +02:00
Volker Fröhlich
8c3e992572 New version 0.19.1 2020-02-02 13:57:10 +01:00
Fedora Release Engineering
66899be4c7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-30 10:21:09 +00:00
Volker Fröhlich
a37191feac New version 0.19 2020-01-19 15:23:51 +01:00
Miro Hrončok
05e7f66f4c Rebuilt for Python 3.8.0rc1 (#1748018) 2019-10-03 14:00:30 +02:00
Miro Hrončok
a38b26510d Rebuilt for Python 3.8 2019-08-19 10:25:08 +02:00
Fedora Release Engineering
dcfcb71b3e - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-26 11:54:01 +00:00
Volker Fröhlich
0839af7b87 New version 0.18 2019-06-26 09:10:06 +02:00
Miro Hrončok
ad88e0dc93 Subpackage python2-owslib has been removed 2019-02-11 14:28:56 +01:00
Fedora Release Engineering
149bcd09b6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-02 05:23:24 +00:00
Volker Fröhlich
11fabf6bff New version 0.17.0
Adapt documentation file names
2018-09-20 09:07:28 +02:00
Igor Gnatenko
a8aae22c42
%{python_sitelib} → %{python2_sitelib}
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-07-29 23:12:04 +02:00
Fedora Release Engineering
4a889064ec - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-13 23:17:25 +00:00
Miro Hrončok
8b4f67469d Rebuilt for Python 3.7 2018-06-19 10:51:55 +02:00
Iryna Shcherbina
ed3026138d Update Python 2 dependency declarations to new packaging standards 2018-02-21 03:28:04 +01:00
Fedora Release Engineering
801fdba8fc - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-09 06:24:39 +00:00
Volker Froehlich
79cfc000ec New version 0.16 2017-12-22 10:01:57 +01:00
Volker Froehlich
bdd2ef3b7d New version 0.15.0 2017-09-14 00:33:16 +03:00
Zbigniew Jędrzejewski-Szmek
7fec8b359a Add Provides for the old name 2017-08-29 02:55:26 -04:00
Zbigniew Jędrzejewski-Szmek
80d6680038 Python 2 binary package renamed to python2-owslib 2017-08-19 09:41:55 -04:00
Fedora Release Engineering
1d1b5bf445 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-27 09:27:56 +00:00
Fedora Release Engineering
9f468e907a - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-11 08:13:21 +00:00
Volker Froehlich
867484f16f New version 0.14.0 2017-01-16 09:34:38 +01:00
Miro Hrončok
d95fce2abb Rebuild for Python 3.6 2016-12-19 18:20:37 +01:00
Volker Fröhlich
e9e3d7ba06 New release 0.13.0 2016-09-25 11:16:22 +02:00
Volker Fröhlich
da045c3422 New release 0.12.0 2016-09-14 01:10:08 +02:00
Fedora Release Engineering
4d9c2e2649 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages 2016-07-19 08:43:25 +00:00
Volker Fröhlich
5c2ae13abc New version 0.11.2 2016-05-16 23:58:22 +02:00
Volker Fröhlich
be698e19b5 New version 0.11.1 2016-05-14 12:57:36 +02:00
Volker Fröhlich
1fff3ab827 Merge branch 'master' of ssh://pkgs.fedoraproject.org/python-OWSLib 2016-04-01 22:25:52 +02:00
Volker Fröhlich
72e8f768b3 New release 0.11.0 2016-04-01 22:21:40 +02:00
Fedora Release Engineering
eebed23734 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild 2016-02-04 18:52:17 +00:00
Volker Fröhlich
3f2e01f078 New version 0.10.3 2015-11-23 23:39:02 +01:00
Volker Fröhlich
591680ae62 New version 0.10.1 2015-11-22 19:06:59 +01:00
Peter Robinson
f0c1eafe38 - Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 2015-11-12 11:28:58 +00:00
Volker Fröhlich
b3b78fe93f New version 0.10.0 2015-11-11 18:48:10 +01:00
Peter Robinson
c157faaf25 - Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 2015-11-10 15:03:00 +00:00
Volker Fröhlich
af1e9ae05b New release 0.9.2 2015-09-25 22:54:48 +02:00
Volker Fröhlich
4b5b53a25c Add dependency on pyproj
- This dependency was introduced in 0.9.1
2015-09-20 15:18:50 +02:00
7 changed files with 357 additions and 417 deletions

35
.gitignore vendored
View file

@ -6,4 +6,39 @@
/OWSLib-0.8.12.tar.gz
/OWSLib-0.8.13.tar.gz
/OWSLib-0.9.0.tar.gz
/OWSLib-0.9.1.tar.gz
/OWSLib-0.9.2.tar.gz
/OWSLib-0.10.0.tar.gz
/OWSLib-0.10.1.tar.gz
/OWSLib-0.10.3.tar.gz
/OWSLib-0.11.0.tar.gz
/OWSLib-0.11.1.tar.gz
/OWSLib-0.11.2.tar.gz
/OWSLib-0.12.0.tar.gz
/OWSLib-0.13.0.tar.gz
/OWSLib-0.14.0.tar.gz
/OWSLib-0.15.0.tar.gz
/OWSLib-0.16.0.tar.gz
/OWSLib-0.17.0.tar.gz
/OWSLib-0.18.0.tar.gz
/OWSLib-0.19.0.tar.gz
/OWSLib-0.19.1.tar.gz
/OWSLib-0.20.0.tar.gz
/OWSLib-0.21.0.tar.gz
/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.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

View file

@ -1,232 +0,0 @@
From 2f81f2b36c01b2a32e8dcf6b2c695b36b1eb0b8f Mon Sep 17 00:00:00 2001
From: Tom Kralidis <tomkralidis@gmail.com>
Date: Fri, 24 Feb 2023 10:15:35 -0500
Subject: [PATCH] use only lxml for XML handling
Backport of PR#863 (https://github.com/geopython/OWSLib/pull/863) to 0.9.2
---
owslib/etree.py | 58 ++++++++---------------------
owslib/util.py | 96 ++++++++++++++++++------------------------------
requirements.txt | 1 +
3 files changed, 52 insertions(+), 103 deletions(-)
diff --git a/owslib/etree.py b/owslib/etree.py
index b8babe8..88ae7ab 100644
--- a/owslib/etree.py
+++ b/owslib/etree.py
@@ -6,9 +6,15 @@
from __future__ import (absolute_import, division, print_function)
import six
-import inspect
-def patch_well_known_namespaces(etree_module):
+from lxml import etree
+from lxml.etree import ParseError
+ElementType = etree._Element
+
+from owslib.namespaces import Namespaces
+
+def patch_well_known_namespaces():
+ """Monkey patches lxml.etree to add some well-known namespaces."""
import warnings
from owslib.namespaces import Namespaces
@@ -17,50 +23,18 @@ def patch_well_known_namespaces(etree_module):
"""Monkey patches the etree module to add some well-known namespaces."""
try:
- register_namespace = etree_module.register_namespace
+ register_namespace = etree.register_namespace
except AttributeError:
- try:
- etree_module._namespace_map
+ etree._namespace_map
- def register_namespace(prefix, uri):
- etree_module._namespace_map[uri] = prefix
- except AttributeError:
- def register_namespace(prefix, uri):
- pass
- warnings.warn("Only 'lxml.etree' >= 2.3 and 'xml.etree.ElementTree' >= 1.3 are fully supported!")
+ def register_namespace(prefix, uri):
+ etree._namespace_map[uri] = prefix
for k, v in six.iteritems(ns.get_namespaces()):
register_namespace(k, v)
-# try to find lxml or elementtree
-try:
- from lxml import etree
- from lxml.etree import ParseError
- ElementType = etree._Element
-except ImportError:
- try:
- # Python 2.x/3.x with ElementTree included
- import xml.etree.ElementTree as etree
-
- try:
- from xml.etree.ElementTree import ParseError
- except ImportError:
- from xml.parsers.expat import ExpatError as ParseError
-
- if hasattr(etree, 'Element') and inspect.isclass(etree.Element):
- # python 3.4, 3.3, 2.7
- ElementType = etree.Element
- else:
- # python 2.6
- ElementType = etree._ElementInterface
-
- except ImportError:
- try:
- # Python < 2.5 with ElementTree installed
- import elementtree.ElementTree as etree
- ParseError = StandardError # i can't find a ParseError related item in elementtree docs!
- ElementType = etree.Element
- except ImportError:
- raise RuntimeError('You need either lxml or ElementTree to use OWSLib!')
+ etree.set_default_parser(
+ parser=etree.XMLParser(resolve_entities=False)
+ )
-patch_well_known_namespaces(etree)
+patch_well_known_namespaces()
diff --git a/owslib/util.py b/owslib/util.py
index 22bcaa7..51ce6d0 100644
--- a/owslib/util.py
+++ b/owslib/util.py
@@ -239,11 +239,8 @@ def nspath_eval(xpath, namespaces):
def cleanup_namespaces(element):
""" Remove unused namespaces from an element """
- if etree.__name__ == 'lxml.etree':
- etree.cleanup_namespaces(element)
- return element
- else:
- return etree.fromstring(etree.tostring(element))
+ etree.cleanup_namespaces(element)
+ return element
def add_namespaces(root, ns_keys):
@@ -254,35 +251,34 @@ def add_namespaces(root, ns_keys):
ns_keys = [(x, namespaces.get_namespace(x)) for x in ns_keys]
- if etree.__name__ != 'lxml.etree':
- # We can just add more namespaces when not using lxml.
- # We can't re-add an existing namespaces. Get a list of current
- # namespaces in use
- existing_namespaces = set()
- for elem in root.getiterator():
- if elem.tag[0] == "{":
- uri, tag = elem.tag[1:].split("}")
- existing_namespaces.add(namespaces.get_namespace_from_url(uri))
- for key, link in ns_keys:
- if link is not None and key not in existing_namespaces:
- root.set("xmlns:%s" % key, link)
- return root
- else:
- # lxml does not support setting xmlns attributes
- # Update the elements nsmap with new namespaces
- new_map = root.nsmap
- for key, link in ns_keys:
- if link is not None:
- new_map[key] = link
- # Recreate the root element with updated nsmap
- new_root = etree.Element(root.tag, nsmap=new_map)
- # Carry over attributes
- for a, v in list(root.items()):
- new_root.set(a, v)
- # Carry over children
- for child in root:
- new_root.append(deepcopy(child))
- return new_root
+ # lxml does not support setting xmlns attributes
+ # Update the elements nsmap with new namespaces
+ new_map = root.nsmap
+ for key, link in ns_keys:
+ if link is not None:
+ new_map[key] = link
+ # Recreate the root element with updated nsmap
+ new_root = etree.Element(root.tag, nsmap=new_map)
+ # Carry over attributes
+ for a, v in list(root.items()):
+ new_root.set(a, v)
+ # Carry over children
+ for child in root:
+ new_root.append(deepcopy(child))
+ return new_root
+
+ # We can just add more namespaces when not using lxml.
+ # We can't re-add an existing namespaces. Get a list of current
+ # namespaces in use
+ existing_namespaces = set()
+ for elem in root.iter():
+ if elem.tag[0] == "{":
+ uri, tag = elem.tag[1:].split("}")
+ existing_namespaces.add(namespaces.get_namespace_from_url(uri))
+ for key, link in ns_keys:
+ if link is not None and key not in existing_namespaces:
+ root.set("xmlns:%s" % key, link)
+ return root
def getXMLInteger(elem, tag):
@@ -401,20 +397,13 @@ def element_to_string(element, encoding=None, xml_declaration=False):
if encoding is None:
encoding = "ISO-8859-1"
- if etree.__name__ == 'lxml.etree':
- if xml_declaration:
- if encoding in ['unicode', 'utf-8']:
- output = '<?xml version="1.0" encoding="utf-8" standalone="no"?>\n%s' % \
- etree.tostring(element, encoding='unicode')
- else:
- output = etree.tostring(element, encoding=encoding, xml_declaration=True)
+ if xml_declaration:
+ if encoding in ['unicode', 'utf-8']:
+ output = '<?xml version="1.0" encoding="utf-8" standalone="no"?>\n%s' % \
+ etree.tostring(element, encoding='unicode')
else:
- output = etree.tostring(element)
+ output = etree.tostring(element, encoding=encoding, xml_declaration=True)
else:
- if xml_declaration:
- output = '<?xml version="1.0" encoding="%s" standalone="no"?>\n%s' % (encoding,
- etree.tostring(element, encoding=encoding))
- else:
output = etree.tostring(element)
return output
@@ -581,18 +570,3 @@ try: # 2.7
from collections import OrderedDict
except: # 2.6
from ordereddict import OrderedDict
-
-
-def which_etree():
- """decipher which etree library is being used by OWSLib"""
-
- which_etree = None
-
- if 'lxml' in etree.__file__:
- which_etree = 'lxml.etree'
- elif 'xml/etree' in etree.__file__:
- which_etree = 'xml.etree'
- elif 'elementree' in etree.__file__:
- which_etree = 'elementtree.ElementTree'
-
- return which_etree
diff --git a/requirements.txt b/requirements.txt
index 7689a61..10ad5db 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
+lxml
python-dateutil>=1.5
pytz
requests>=1.0
--
2.39.2

146
changelog
View file

@ -1,10 +1,142 @@
* Wed Mar 08 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 0.9.0-2
- Generally “modernize” packaging (by EPEL7 standards)
- Update License to SPDX
- Build the Python 3 sub-package on EPEL7
- Switch to the GitHub source archive and run the offline tests
- Install more text documentation files
- Add dependency version bounds
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.21.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 0.21.0-3
- Rebuilt for Python 3.10
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.21.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Dec 09 2020 Volker Fröhlich <volker27@gmx.at> - 0.21.0-1
- New upstream release
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jun 05 2020 Volker Fröhlich <volker27@gmx.at> - 0.20.0-1
- New upstream release
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 0.19.1-2
- Rebuilt for Python 3.9
* Sun Feb 02 2020 Volker Fröhlich <volker27@gmx.at> - 0.19.1-1
- New upstream release
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sun Jan 19 2020 Volker Fröhlich <volker27@gmx.at> - 0.19.0-1
- New upstream release
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 0.18.0-4
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 0.18.0-3
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.18.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed Jun 26 2019 Volker Fröhlich <volker27@gmx.at> - 0.18.0-1
- New upstream release
* Mon Feb 11 2019 Miro Hrončok <mhroncok@redhat.com> - 0.17.0-3
- Subpackage python2-owslib has been removed
See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Sep 19 2018 Volker Fröhlich <volker27@gmx.at> - 0.17.0-1
- New upstream release
- Update names of documentation files
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.16.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 0.16.0-4
- Rebuilt for Python 3.7
* Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 0.16.0-3
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.16.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Dec 22 2017 Volker Fröhlich <volker27@gmx.at> - 0.16.0-1
- New upstream release
* Thu Sep 14 2017 Volker Fröhlich <volker27@gmx.at> - 0.15.0-1
- New upstream release
* Tue Aug 29 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.14.0-5
- Add Provides for the old name
* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.14.0-4
- Python 2 binary package renamed to python2-owslib
See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.14.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.14.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Jan 12 2017 Volker Fröhlich <volker27@gmx.at> - 0.14.0-1
- New upstream release
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 0.13.0-2
- Rebuild for Python 3.6
* Sun Sep 25 2016 Volker Fröhlich <volker27@gmx.at> - 0.13.0-1
- New upstream release
* Tue Sep 13 2016 Volker Fröhlich <volker27@gmx.at> - 0.12.0-1
- New upstream release
- Update URL and Source
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.11.2-2
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Mon May 16 2016 Volker Fröhlich <volker27@gmx.at> - 0.11.2-1
- New upstream release
* Sat May 14 2016 Volker Fröhlich <volker27@gmx.at> - 0.11.1-1
- New upstream release
* Fri Apr 1 2016 Volker Fröhlich <volker27@gmx.at> - 0.11.0-1
- New upstream release
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Mon Nov 23 2015 Volker Fröhlich <volker27@gmx.at> - 0.10.3-1
- New upstream release
* Sun Nov 22 2015 Volker Fröhlich <volker27@gmx.at> - 0.10.1-1
- New upstream release
* Thu Nov 12 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.0-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5
* Wed Nov 11 2015 Volker Fröhlich <volker27@gmx.at> - 0.10.0-1
- New upstream release
* Tue Nov 10 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.2-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5
* Fri Sep 25 2015 Volker Fröhlich <volker27@gmx.at> - 0.9.2-1
- New upstream release
* Sun Sep 6 2015 Volker Fröhlich <volker27@gmx.at> - 0.9.1-2
- Add pyproj dependency
* Sun Sep 6 2015 Volker Fröhlich <volker27@gmx.at> - 0.9.1-1
- New upstream release
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sat Jun 13 2015 Volker Fröhlich <volker27@gmx.at> - 0.9.0-1
- New upstream release

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}" .

7
python-OWSLib.rpmlintrc Normal file
View file

@ -0,0 +1,7 @@
# 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")

View file

@ -1,207 +1,142 @@
# Works with either ElementTree or python-lxml
# No pyproj for Python 3 in EPEL7
%bcond_with python3
Name: python-OWSLib
Version: 0.9.2
Version: 0.35.0
Release: %autorelease
Summary: Client library for OGC web services
Summary: OGC Web Service utility library
License: BSD-3-Clause
URL: http://geopython.github.io/OWSLib
%global forgeurl https://github.com/geopython/OWSLib
Source0: %{forgeurl}/archive/%{version}/OWSLib-%{version}.tar.gz
URL: https://geopython.github.io/OWSLib
# 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
# use only lxml for XML handling
# Backport of PR#863 (https://github.com/geopython/OWSLib/pull/863) to 0.9.2
# Fixes: CVE-2023-27476 https://nvd.nist.gov/vuln/detail/CVE-2023-27476
# GHSA-8h9c-r582-mggc https://github.com/geopython/OWSLib/security/advisories/GHSA-8h9c-r582-mggc
# RHBZ#2176417 https://bugzilla.redhat.com/show_bug.cgi?id=2176417
Patch0: 0001-use-only-lxml-for-XML-handling.patch
BuildSystem: pyproject
BuildOption(install): -l owslib
BuildArch: noarch
# Tests; dependencies are in requirements-dev.txt.
BuildRequires: %{py3_dist pytest}
BuildRequires: %{py3_dist pytest_httpserver}
BuildRequires: %{py3_dist Pillow}
# We dont have pytest-socket packaged, and we can get by without it.
# - pytest-socket
# We dont 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:
Package for client programming with Open Geospatial Consortium (OGC) web
service (hence OWS) interface standards, and their related content models.}
OWSLib is a Python package for client programming with Open Geospatial
Consortium (OGC) web service (hence OWS) interface standards, and their related
content models.
Full documentation is available at http://geopython.github.io/OWSLib
OWSLib provides a common API for accessing service metadata and wrappers for
numerous OGC Web Service interfaces.}
%description %{common_description}
%package -n python2-OWSLib
%package -n python3-OWSLib
Summary: %{summary}
%{?python_provide:%python_provide python2-OWSLib}
%py_provides python3-owslib
BuildRequires: python2-devel
BuildRequires: python2-setuptools
BuildRequires: python2-pytest
# 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
BuildRequires: python2-dateutil >= 1.5
BuildRequires: python2-requests >= 1.0
BuildRequires: python2-pytz
BuildRequires: pyproj
BuildRequires: python-lxml
Requires: python2-dateutil >= 1.5
Requires: python2-requests >= 1.0
Requires: python2-pytz
Requires: pyproj
Requires: python-lxml
%description -n python2-OWSLib %{common_description}
%description -n python3-OWSLib %{common_description}
%if %{with python3}
%package -n python%{python3_pkgversion}-OWSLib
Summary: %{summary}
%{?python_provide:%python_provide python%{python3_pkgversion}-OWSLib}
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-setuptools
BuildRequires: python%{python3_pkgversion}-pytest
BuildRequires: python%{python3_pkgversion}-dateutil >= 1.5
BuildRequires: python%{python3_pkgversion}-requests >= 1.0
BuildRequires: python%{python3_pkgversion}-pytz
BuildRequires: python%{python3_pkgversion}-pyproj
BuildRequires: python%{python3_pkgversion}-lxml
Requires: python%{python3_pkgversion}-dateutil >= 1.5
Requires: python%{python3_pkgversion}-requests >= 1.0
Requires: python%{python3_pkgversion}-pytz
Requires: python%{python3_pkgversion}-pyproj
Requires: python%{python3_pkgversion}-lxml
%description -n python%{python3_pkgversion}-OWSLib %{common_description}
%endif
%prep -a
# Dont analyze/report test coverage
sed -r -i 's/^([[:blank:]]*)(--cov\b)/\1# \2/' tox.ini
%prep
%autosetup -n OWSLib-%{version} -p1
rm -rf OWSLib.egg-info
# Remove shebangs from non-script sources. The find-then-modify pattern
# preserves mtimes on sources that did not need to be modified.
find 'owslib' -type f -name '*.py' \
-exec gawk '/^#!/ { print FILENAME }; { nextfile }' '{}' '+' |
xargs -r sed -r -i '1{/^#!/d}'
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters
sed -r -i 's/--cov[^[:blank:]=]*([=[:blank:]][^-][^[:blank:]]+)?//g' tox.ini
%build
%py2_build
%if %{with python3}
%py3_build
%endif
%install
%py2_install
%if %{with python3}
%py3_install
%endif
%check
%check -a
# Otherwise, pytest finds the package twice in the Python path and complains.
rm -rf owslib
# In recent versions, 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 and txt)"
k="${k-}${k+ and }not (wfs_MapServerWFSFeature and txt)"
k="${k-}${k+ and }not (wfs_MapServerWFSCapabilities and txt)"
k="${k-}${k+ and }not (wfs2_storedqueries and txt)"
k="${k-}${k+ and }not (wfs1_generic and txt)"
k="${k-}${k+ and }not (wcs_thredds and txt)"
k="${k-}${k+ and }not (test_wmts_example_informatievlaanderen and 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"
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"
# These require network access, and would be covered by the “online” mark:
k="${k-}${k+ and }not (WebMapService and getmap)"
k="${k-}${k+ and }not (WebMapTileService and buildTileRequest)"
k="${k-}${k+ and }not (WebMapTileService and gettile)"
k="${k-}${k+ and }not (csw_gdp and txt)"
k="${k-}${k+ and }not (csw_geonetwork and txt)"
k="${k-}${k+ and }not (csw_geoserver and txt)"
k="${k-}${k+ and }not (csw_linz and txt)"
k="${k-}${k+ and }not (csw_ngdc and txt)"
k="${k-}${k+ and }not (csw_nlr and txt)"
k="${k-}${k+ and }not (csw_pycsw and txt)"
k="${k-}${k+ and }not (csw_pycsw_skip_caps and txt)"
k="${k-}${k+ and }not (csw_skgeodsy and txt)"
k="${k-}${k+ and }not (csw_uuid_constrain and txt)"
k="${k-}${k+ and }not (ows_interfaces and txt)"
k="${k-}${k+ and }not (sos_10_ndbc_getobservation and txt)"
k="${k-}${k+ and }not (tms and txt)"
k="${k-}${k+ and }not (wcs_idee and txt)"
k="${k-}${k+ and }not (wfs_USDASSURGO and txt)"
k="${k-}${k+ and }not (wms_JPLCapabilities and txt)"
k="${k-}${k+ and }not (wms_getfeatureinfo and txt)"
k="${k-}${k+ and }not (wmts and txt)"
k="${k-}${k+ and }not (wps_execute and txt)"
k="${k-}${k+ and }not (wps_execute_invalid_request and 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_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)"
# ____________ [doctest] tests/doctests/wms_GeoServerCapabilities.txt ____________
# 062 >>> x = wms['opengeo:poi'].styles
# 063 >>> x == {'point': {'legend': 'http://localhost:8080/geoserver/wms?request=GetLegendGraphic&format=image%2Fpng&width=20&height=20&layer=poi', 'title': 'A boring default style'}}
# 064 True
# 065
# 066 Test nested layer
# 067
# 068 >>> wms['parent_layer'].title
# 069 'Parent Layer'
# 070
# 071 >>> wms['parent_layer'].queryable
# Expected:
# 1
# Got:
# 0
k="${k-}${k+ and } not (wms_GeoServerCapabilities and txt)"
PYTHONPATH='%{buildroot}%{python2_sitelib}' PYTHONDONTWRITEBYTECODE=1 \
%{python2} -m pytest -m 'not online' -k "${k-}"
%if %{with python3}
PYTHONPATH='%{buildroot}%{python3_sitelib}' PYTHONDONTWRITEBYTECODE=1 \
%{python3} -m pytest -m 'not online' -k "${k-}"
%endif
%pytest -m 'not online' -k "${k-}" ${ignore-} -v -rs
%files -n python2-OWSLib
%license LICENSE.txt
%doc CHANGES.txt
%doc CREDITS.txt
%doc FAQ.txt
%doc HISTORY.txt
%doc README.txt
%{python2_sitelib}/owslib/
%{python2_sitelib}/OWSLib-%{version}-py%{python2_version}.egg-info
%if %{with python3}
%files -n python%{python3_pkgversion}-OWSLib
%license LICENSE.txt
%doc CHANGES.txt
%doc CREDITS.txt
%doc FAQ.txt
%doc HISTORY.txt
%doc README.txt
%{python3_sitelib}/owslib/
%{python3_sitelib}/OWSLib-%{version}-py%{python3_version}.egg-info
%endif
%files -n python3-OWSLib -f %{pyproject_files}
%doc README.md
%changelog

View file

@ -1 +1 @@
SHA512 (OWSLib-0.9.2.tar.gz) = 1818299d702053b344edd435417785c8dd1c4d811a8bff7919c04624cf62a9324c856604965706f0416bea827dab3e5650b1f1cf6730b1b424535673f90e4cf0
SHA512 (OWSLib-0.35.0-filtered.tar.zst) = be1eb52fa09049b720c1ebd476363e01c6442c9905c9adf0d35ccc11f39b228b9f3e64ed882a7c04987f2f38f9c8500a61aeef61e48a41602098ff22df0ed526