Sync from SUSE:ALP:Source:Standard:1.0 python-furl revision 2628f67574423cdc71f5ba4e575a5cc3
This commit is contained in:
commit
688cb8758e
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -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
|
145
165-use-ipaddress-library.patch
Normal file
145
165-use-ipaddress-library.patch
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
From 38587f3dca7e2f75b04cb0d80e4fc30ea6e139dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?=C3=89loi=20Rivard?= <eloi.rivard@aquilenet.fr>
|
||||||
|
Date: Sat, 24 Sep 2022 15:40:59 +0200
|
||||||
|
Subject: [PATCH] Use ipaddress to detect valid and invalid IPs
|
||||||
|
|
||||||
|
---
|
||||||
|
furl/furl.py | 47 +++++++++++++++++++++++++++++++++++++---------
|
||||||
|
setup.py | 1 +
|
||||||
|
tests/test_furl.py | 21 +++++++++++----------
|
||||||
|
3 files changed, 50 insertions(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/furl/furl.py b/furl/furl.py
|
||||||
|
index cd6d710..451767f 100644
|
||||||
|
--- a/furl/furl.py
|
||||||
|
+++ b/furl/furl.py
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
|
||||||
|
import re
|
||||||
|
import abc
|
||||||
|
+import ipaddress
|
||||||
|
import warnings
|
||||||
|
from copy import deepcopy
|
||||||
|
from posixpath import normpath
|
||||||
|
@@ -241,6 +242,37 @@ def is_valid_host(hostname):
|
||||||
|
return '' not in toks # Adjacent periods aren't allowed.
|
||||||
|
|
||||||
|
|
||||||
|
+def is_valid_ipv4(ip):
|
||||||
|
+ if isinstance(ip, six.binary_type):
|
||||||
|
+ ip = ip.decode()
|
||||||
|
+
|
||||||
|
+ try:
|
||||||
|
+ ipaddress.IPv4Address(ip)
|
||||||
|
+ return True
|
||||||
|
+ except ValueError:
|
||||||
|
+ return False
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+def is_valid_ipv6(ip):
|
||||||
|
+ if isinstance(ip, six.binary_type):
|
||||||
|
+ ip = ip.decode()
|
||||||
|
+
|
||||||
|
+ # ipaddress handle IPs without brackets
|
||||||
|
+ if (
|
||||||
|
+ callable_attr(ip, 'startswith')
|
||||||
|
+ and callable_attr(ip, 'endswith')
|
||||||
|
+ and ip.startswith("[")
|
||||||
|
+ and ip.endswith("]")
|
||||||
|
+ ):
|
||||||
|
+ ip = ip[1:-1]
|
||||||
|
+
|
||||||
|
+ try:
|
||||||
|
+ ipaddress.IPv6Address(ip)
|
||||||
|
+ return True
|
||||||
|
+ except ValueError:
|
||||||
|
+ return False
|
||||||
|
+
|
||||||
|
+
|
||||||
|
def get_scheme(url):
|
||||||
|
if url.startswith(':'):
|
||||||
|
return ''
|
||||||
|
@@ -1434,15 +1466,12 @@ def host(self, host):
|
||||||
|
"""
|
||||||
|
Raises: ValueError on invalid host or malformed IPv6 address.
|
||||||
|
"""
|
||||||
|
- # Invalid IPv6 literal.
|
||||||
|
- urllib.parse.urlsplit('http://%s/' % host) # Raises ValueError.
|
||||||
|
-
|
||||||
|
- # Invalid host string.
|
||||||
|
- resembles_ipv6_literal = (
|
||||||
|
- host is not None and lget(host, 0) == '[' and ':' in host and
|
||||||
|
- lget(host, -1) == ']')
|
||||||
|
- if (host is not None and not resembles_ipv6_literal and
|
||||||
|
- not is_valid_host(host)):
|
||||||
|
+ if (
|
||||||
|
+ host
|
||||||
|
+ and not is_valid_host(host)
|
||||||
|
+ and not is_valid_ipv4(host)
|
||||||
|
+ and not is_valid_ipv6(host)
|
||||||
|
+ ):
|
||||||
|
errmsg = (
|
||||||
|
"Invalid host '%s'. Host strings must have at least one "
|
||||||
|
"non-period character, can't contain any of '%s', and can't "
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index 8322619..887ca2e 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -114,6 +114,7 @@ def run_tests(self):
|
||||||
|
install_requires=[
|
||||||
|
'six>=1.8.0',
|
||||||
|
'orderedmultidict>=1.0.1',
|
||||||
|
+ 'ipaddress>=1.0.23; python_version < "3.3"',
|
||||||
|
],
|
||||||
|
cmdclass={
|
||||||
|
'test': RunTests,
|
||||||
|
diff --git a/tests/test_furl.py b/tests/test_furl.py
|
||||||
|
index bc268c8..5666be7 100644
|
||||||
|
--- a/tests/test_furl.py
|
||||||
|
+++ b/tests/test_furl.py
|
||||||
|
@@ -1655,10 +1655,10 @@ def test_hosts(self):
|
||||||
|
# addresses.
|
||||||
|
f = furl.furl('http://1.2.3.4.5.6/')
|
||||||
|
|
||||||
|
- # Invalid, but well-formed, IPv6 addresses shouldn't raise an
|
||||||
|
- # exception because urlparse.urlsplit() doesn't raise an
|
||||||
|
- # exception on invalid IPv6 addresses.
|
||||||
|
- furl.furl('http://[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]/')
|
||||||
|
+ # Invalid, but well-formed, IPv6 addresses should raise an
|
||||||
|
+ # exception.
|
||||||
|
+ with self.assertRaises(ValueError):
|
||||||
|
+ furl.furl('http://[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]/')
|
||||||
|
|
||||||
|
# Malformed IPv6 should raise an exception because urlparse.urlsplit()
|
||||||
|
# raises an exception on malformed IPv6 addresses.
|
||||||
|
@@ -1684,12 +1684,17 @@ def test_netloc(self):
|
||||||
|
assert f.host == '1.2.3.4.5.6'
|
||||||
|
assert f.port == 999
|
||||||
|
|
||||||
|
- netloc = '[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]:888'
|
||||||
|
+ netloc = '[1:2:3:4:5:6:7:8]:888'
|
||||||
|
f.netloc = netloc
|
||||||
|
assert f.netloc == netloc
|
||||||
|
- assert f.host == '[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]'
|
||||||
|
+ assert f.host == '[1:2:3:4:5:6:7:8]'
|
||||||
|
assert f.port == 888
|
||||||
|
|
||||||
|
+ # Well-formed but invalid IPv6 should raise an exception
|
||||||
|
+ netloc = '[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]:888'
|
||||||
|
+ with self.assertRaises(ValueError):
|
||||||
|
+ f.netloc = netloc
|
||||||
|
+
|
||||||
|
# Malformed IPv6 should raise an exception because
|
||||||
|
# urlparse.urlsplit() raises an exception
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
@@ -1703,10 +1708,6 @@ def test_netloc(self):
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
f.netloc = 'pump2pump.org:777777777777'
|
||||||
|
|
||||||
|
- # No side effects.
|
||||||
|
- assert f.host == '[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]'
|
||||||
|
- assert f.port == 888
|
||||||
|
-
|
||||||
|
# Empty netloc.
|
||||||
|
f = furl.furl('//')
|
||||||
|
assert f.scheme is None and f.netloc == '' and f.url == '//'
|
BIN
furl-2.1.3.tar.gz
(Stored with Git LFS)
Normal file
BIN
furl-2.1.3.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
84
python-furl.changes
Normal file
84
python-furl.changes
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 4 22:28:07 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
|
- Add 165-use-ipaddress-library.patch to use standard ipaddress
|
||||||
|
library to parse IP addresses (gh#gruns/furl#164).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 21 12:24:55 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- add sle15_python_module_pythons (jsc#PED-68)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 28 19:47:43 UTC 2022 - Yogalakshmi Arunachalam <yarunachalam@suse.com>
|
||||||
|
|
||||||
|
- version update to v2.1.3
|
||||||
|
Fixed: Actually drop ';' as a query delimiter. See furl v2.1.2's
|
||||||
|
changelog and https://bugs.python.org/issue42967.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 19 16:28:12 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- Skip python2: Fixes 15.X build
|
||||||
|
- Remove flake8 test requirement: no code linting required for
|
||||||
|
packaging
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon May 17 10:41:58 UTC 2021 - pgajdos@suse.com
|
||||||
|
|
||||||
|
- version update to 2.1.2
|
||||||
|
Fixed: Support Python 3.9's changed urllib.parse.urljoin() behavior.
|
||||||
|
Changed: Drop semicolon query delimiters. See https://bugs.python.org/issue42967.
|
||||||
|
Changed: Drop support for EOL Python 3.4 and Python 3.5.
|
||||||
|
- deleted patches
|
||||||
|
- furl-py39-join.patch (upstreamed)
|
||||||
|
- tests_overcome_bpo42967.patch (upstreamed)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 29 22:10:03 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- Add furl-py39-join.patch to fix Python 3.9 test failure
|
||||||
|
gh#gruns/furl#139
|
||||||
|
- Submitted tests_overcome_bpo42967.patch as gh#gruns/furl#140
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Feb 23 16:19:20 UTC 2021 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
|
- Switch testing to pytest, it is just more convenient to debug.
|
||||||
|
- Add tests_overcome_bpo42967.patch to overcome changes in Python
|
||||||
|
interpreter after fixing bpo#42967 (gh#gruns/furl#135).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Mar 5 12:33:35 UTC 2020 - pgajdos@suse.com
|
||||||
|
|
||||||
|
- version update to 2.1.0
|
||||||
|
Added: a dont_quote= parameter to Query.encode() and a
|
||||||
|
query_dont_quote= parameter to furl.tostr() that exempt valid query
|
||||||
|
characters from being percent-encoded, either in their entirety with
|
||||||
|
dont_quote=True, or selectively with dont_quote=<string>, like
|
||||||
|
dont_quote='/?@_'.
|
||||||
|
|
||||||
|
Changed: Move package info from __init__.py into the more standard
|
||||||
|
__version__.py.
|
||||||
|
|
||||||
|
Fixed: Support Unicode usernames and passwords in Python 2.
|
||||||
|
|
||||||
|
Fixed: Update orderedmultdict to v1.0.1 to resolve a DeprecationWarning.
|
||||||
|
|
||||||
|
Fixed: Encode '/' consistently in query strings across both
|
||||||
|
quote_plus=True and quote_plus=False.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Aug 24 16:20:56 UTC 2019 - Jan Engelhardt <jengelh@inai.de>
|
||||||
|
|
||||||
|
- Use noun phrase in descriptions.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jul 24 09:54:00 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
|
||||||
|
- Format with spec-cleaner
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Jun 2 04:03:55 AM UTC 2019 - John Vandenberg <jayvdb@gmail.com>
|
||||||
|
|
||||||
|
- Initial spec for v2.0.0
|
69
python-furl.spec
Normal file
69
python-furl.spec
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#
|
||||||
|
# spec file for package python-furl
|
||||||
|
#
|
||||||
|
# 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-furl
|
||||||
|
Version: 2.1.3
|
||||||
|
Release: 0
|
||||||
|
Summary: A Python URL manipulation library
|
||||||
|
License: Unlicense
|
||||||
|
Group: Development/Languages/Python
|
||||||
|
URL: https://github.com/gruns/furl
|
||||||
|
Source: https://files.pythonhosted.org/packages/source/f/furl/furl-%{version}.tar.gz
|
||||||
|
# PATCH-FIX-UPSTREAM 165-use-ipaddress-library.patch gh#gruns/furl#164 mcepl@suse.com
|
||||||
|
# use ipaddress to parse IP addresses
|
||||||
|
Patch0: 165-use-ipaddress-library.patch
|
||||||
|
BuildRequires: %{python_module pip}
|
||||||
|
BuildRequires: %{python_module wheel}
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: python-rpm-macros
|
||||||
|
Requires: python-orderedmultidict >= 1.0.1
|
||||||
|
Requires: python-six >= 1.8.0
|
||||||
|
BuildArch: noarch
|
||||||
|
# SECTION test requirements
|
||||||
|
BuildRequires: %{python_module orderedmultidict >= 1.0.1}
|
||||||
|
BuildRequires: %{python_module pytest}
|
||||||
|
BuildRequires: %{python_module six >= 1.8.0}
|
||||||
|
# /SECTION
|
||||||
|
%python_subpackages
|
||||||
|
|
||||||
|
%description
|
||||||
|
furl is a Python library for parsing and manipulating URLs.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n furl-%{version}
|
||||||
|
chmod -x *.md furl.egg-info/*
|
||||||
|
|
||||||
|
%build
|
||||||
|
%pyproject_wheel
|
||||||
|
|
||||||
|
%install
|
||||||
|
%pyproject_install
|
||||||
|
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||||
|
|
||||||
|
%check
|
||||||
|
%pytest
|
||||||
|
|
||||||
|
%files %{python_files}
|
||||||
|
%doc README.md
|
||||||
|
%license LICENSE.md
|
||||||
|
%{python_sitelib}/furl
|
||||||
|
%{python_sitelib}/furl-%{version}*-info
|
||||||
|
|
||||||
|
%changelog
|
Loading…
Reference in New Issue
Block a user