commit 7d3e0e02963550365c4b1cddef08535162a9744cd4b5bd5e869640a421935015 Author: Adrian Schröter Date: Fri May 3 23:36:00 2024 +0200 Sync from SUSE:SLFO:Main python-yarl revision 5e34555c73c3b88b72a5c31ec416baf6 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -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 diff --git a/882-sq_bracket_in_URL_netloc.patch b/882-sq_bracket_in_URL_netloc.patch new file mode 100644 index 0000000..f93251a --- /dev/null +++ b/882-sq_bracket_in_URL_netloc.patch @@ -0,0 +1,125 @@ +From 5c977b52a33bf58f016e5968934c3fcb8b49b239 Mon Sep 17 00:00:00 2001 +From: Martijn Pieters +Date: Tue, 6 Jun 2023 17:38:47 +0100 +Subject: [PATCH] Correct square bracket handling in URL netloc + +- The human representation of usernames and passwords should percent- + encode square brackets. +- Clean up the test suite to remove tests that use invalid hostnames + (square brackets in a host name must only be used for IPv6 addresses). +- Rename the remaining test using IPvFuture address syntax to make this + explicit. +- Drop a test for IPv6 addresses with a zone id; zone id support is + controversial and expilictly excluded from the WHATWG URL standard. + Zone ids *without percent characters in their name* continue to work + as long as urllib.parse.urlsplit() accepts them but this is not + something that yarl.URL() needs to support explicitly. +--- + CHANGES/876.bugfix.rst | 1 + + tests/test_url.py | 10 ++-------- + tests/test_url_parsing.py | 28 ++-------------------------- + yarl/_url.py | 4 ++-- + 4 files changed, 7 insertions(+), 36 deletions(-) + create mode 100644 CHANGES/876.bugfix.rst + +--- /dev/null ++++ b/CHANGES/876.bugfix.rst +@@ -0,0 +1 @@ ++Fixed the human representation of URLs with square brackets in usernames and passwords. +--- a/tests/test_url.py ++++ b/tests/test_url.py +@@ -235,12 +235,6 @@ def test_compressed_ipv6(): + assert url.host == url.raw_host + + +-def test_ipv6_zone(): +- url = URL("http://[fe80::822a:a8ff:fe49:470c%тест%42]:123") +- assert url.raw_host == "fe80::822a:a8ff:fe49:470c%тест%42" +- assert url.host == url.raw_host +- +- + def test_ipv4_zone(): + # I'm unsure if it is correct. + url = URL("http://1.2.3.4%тест%42:123") +@@ -1629,8 +1623,8 @@ def test_human_repr_delimiters(): + s = url.human_repr() + assert URL(s) == url + assert ( +- s == "http:// !\"%23$%25&'()*+,-.%2F%3A;<=>%3F%40[\\]^_`{|}~" +- ": !\"%23$%25&'()*+,-.%2F%3A;<=>%3F%40[\\]^_`{|}~" ++ s == "http:// !\"%23$%25&'()*+,-.%2F%3A;<=>%3F%40%5B\\%5D^_`{|}~" ++ ": !\"%23$%25&'()*+,-.%2F%3A;<=>%3F%40%5B\\%5D^_`{|}~" + "@хост.домен:8080" + "/ !\"%23$%25&'()*+,-./:;<=>%3F@[\\]^_`{|}~" + "? !\"%23$%25%26'()*%2B,-./:%3B<%3D>?@[\\]^_`{|}~" +--- a/tests/test_url_parsing.py ++++ b/tests/test_url_parsing.py +@@ -178,14 +178,6 @@ class TestHost: + assert u.query_string == "" + assert u.fragment == "" + +- def test_masked_ipv4(self): +- u = URL("//[127.0.0.1]/") +- assert u.scheme == "" +- assert u.host == "127.0.0.1" +- assert u.path == "/" +- assert u.query_string == "" +- assert u.fragment == "" +- + def test_ipv6(self): + u = URL("//[::1]/") + assert u.scheme == "" +@@ -194,15 +186,7 @@ class TestHost: + assert u.query_string == "" + assert u.fragment == "" + +- def test_strange_ip(self): +- u = URL("//[-1]/") +- assert u.scheme == "" +- assert u.host == "-1" +- assert u.path == "/" +- assert u.query_string == "" +- assert u.fragment == "" +- +- def test_strange_ip_2(self): ++ def test_ipvfuture_address(self): + u = URL("//[v1.-1]/") + assert u.scheme == "" + assert u.host == "v1.-1" +@@ -210,14 +194,6 @@ class TestHost: + assert u.query_string == "" + assert u.fragment == "" + +- def test_strange_ip_3(self): +- u = URL("//v1.[::1]/") +- assert u.scheme == "" +- assert u.host == "::1" +- assert u.path == "/" +- assert u.query_string == "" +- assert u.fragment == "" +- + + class TestPort: + def test_canonical(self): +@@ -320,7 +296,7 @@ class TestUserInfo: + assert u.fragment == "" + + def test_weird_user3(self): +- u = URL("//[some]@host") ++ u = URL("//%5Bsome%5D@host") + assert u.scheme == "" + assert u.user == "[some]" + assert u.password is None +--- a/yarl/_url.py ++++ b/yarl/_url.py +@@ -1117,8 +1117,8 @@ class URL: + + def human_repr(self): + """Return decoded human readable string for URL representation.""" +- user = _human_quote(self.user, "#/:?@") +- password = _human_quote(self.password, "#/:?@") ++ user = _human_quote(self.user, "#/:?@[]") ++ password = _human_quote(self.password, "#/:?@[]") + host = self.host + if host: + host = self._encode_host(self.host, human=True) diff --git a/python-yarl.changes b/python-yarl.changes new file mode 100644 index 0000000..ba0f3b9 --- /dev/null +++ b/python-yarl.changes @@ -0,0 +1,282 @@ +------------------------------------------------------------------- +Tue Jul 4 21:47:32 UTC 2023 - Matej Cepl + +- Add 882-sq_bracket_in_URL_netloc.patch fixing handling of + square bracket handling in URL netloc (gh#aio-libs/yarl#876). + +------------------------------------------------------------------- +Wed Apr 26 07:02:00 UTC 2023 - Daniel Garcia + +- Update to version 1.9.2 + Fix regression with truediv and absolute URLs with empty paths + causing the raw path to lack the leading /. ((#854)_) + +------------------------------------------------------------------- +Mon Apr 24 09:13:21 UTC 2023 - Adrian Schröter + +- update to version 1.9.1 + * Marked tests that fail on older Python patch releases + (< 3.7.10, < 3.8.8 and < 3.9.2) as expected to fail due to missing + a security fix for CVE-2021-23336. ((#850)_) +- Delete support-python-311.patch, not needed anymore + +------------------------------------------------------------------- +Fri Apr 21 12:39:08 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:46:02 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Thu Mar 2 10:41:59 UTC 2023 - Matej Cepl + +- Refreshed support-python-311.patch: with fix + of CVE-2023-24329 (bsc#1208471), the test + test_url_parsing.TestScheme.test_not_a_scheme2 fails on all + openSUSE/SLE Python interpreters. + +------------------------------------------------------------------- +Mon Jan 9 04:17:48 UTC 2023 - Steve Kowalik + +- Add patch support-python-311.patch: + * Skip a test under Python 3.11. + +------------------------------------------------------------------- +Wed Dec 7 22:47:59 UTC 2022 - Yogalakshmi Arunachalam + +- Update to version 1.8.2 + * This is the first release that started shipping wheels for Python 3.11. + +------------------------------------------------------------------- +Thu Aug 18 21:19:19 UTC 2022 - Ben Greiner + +- Update to 1.8.1 + * Added URL.raw_suffix, URL.suffix, URL.raw_suffixes, + URL.suffixes, URL.with_suffix. (#613) + * Dropped Python 3.6 support. (#672) +- Drop tests_overcome_bpo42967.patch + +------------------------------------------------------------------- +Tue Dec 7 15:57:39 UTC 2021 - pgajdos@suse.com + +- version update to 1.7.2 + - Changed call in ``with_port()`` to stop reencoding parts of the URL + that were already encoded. (`#623 `_) + - Add `__bytes__()` magic method so that `bytes(url)` will work and use optimal + ASCII encoding. (`#582 `_) + - Started shipping platform-specific arm64 wheels for Apple Silicon. + (`#622 `_) + - Started shipping platform-specific wheels with the ``musl`` tag targeting typical + Alpine Linux runtimes. (`#622 `_) + - Added support for Python 3.10. (`#622 `_) +- do not require pytest-runner for build, it is not needed + +------------------------------------------------------------------- +Sat Mar 20 19:40:32 UTC 2021 - Ben Greiner + +- Unset -Werror=return-type for python39 +- Only install typing_extensions for Python < 3.8 + +------------------------------------------------------------------- +Tue Feb 23 17:02:42 UTC 2021 - Matej Cepl + +- Add tests_overcome_bpo42967.patch to over effects of bpo#42967, + which forbade mixing amps and semicolons in query strings as + separators. + +------------------------------------------------------------------- +Sat Dec 19 10:06:48 UTC 2020 - Dirk Müller + +- update to 1.6.3: + - No longer loose characters when decoding incorrect percent-sequences (like + ``%e2%82%f8``). All non-decodable percent-sequences are now preserved. + - Provide generated ``.c`` files in TarBall distribution. + - ``human_repr()`` now always produces valid representation equivalent to the + original URL (if the original URL is valid). + - Fixed requoting a single percent followed by a percent-encoded character + in the Cython implementation. + - Fix ValueError when decoding ``%`` which is not followed by two hexadecimal + digits. + - Fix decoding ``%`` followed by a space and hexadecimal digit. + - Fix annotation of ``with_query()``/``update_query()`` methods for + ``key=[val1, val2]`` case. + +------------------------------------------------------------------- +Mon Sep 28 12:05:26 UTC 2020 - Dirk Mueller + +- update to 1.6.0: + - Allow for int and float subclasses in query, while still denying bool. + `#492 `_ + - Do not requote arguments in ``URL.build()``, ``with_xxx()`` and in ``/`` operator. + `#502 `_ + - Keep IPv6 brackets in ``origin()``. + `#504 `_ + +------------------------------------------------------------------- +Tue Jul 28 21:28:25 UTC 2020 - Benjamin Greiner + +- remove c source file from package (rpmlint error) +- needs typing-extensions + +------------------------------------------------------------------- +Tue Jul 28 19:15:09 UTC 2020 - Ondřej Súkup + +- update to 1.5.0 +- fix tests + * Convert host to lowercase on URL building. #386 + * Allow using mod operator (%) for updating query string (an alias for update_query() method) + * Allow use of sequences such as list and tuple in the values of a mapping + such as dict to represent that a key has many values: + url = URL("http://example.com") + assert url.with_query({"a": [1, 2]}) == URL("http://example.com/?a=1&a=2") + * Support URL.build() with scheme and path (creates a relative URL) + * Cache slow IDNA encode/decode calls + * Add @final / Final type hints + * Support URL authority/raw_authority properties and authority argument + of URL.build() method + * Hide the library implementation details, make the exposed public list very clean + * Fix tests with newer Python (3.7.6, 3.8.1 and 3.9.0+) + * Fix a bug where query component, passed in a form of mapping or sequence, + is unquoted in unexpected way + * Hide Query and QueryVariable type aliases in __init__.pyi, now they + are prefixed with underscore. + * Keep ipv6 brackets after updating port/user/password. + +------------------------------------------------------------------- +Mon Feb 3 14:38:51 UTC 2020 - Marketa Calabkova + +- update to 1.4.2 + * Workaround for missing str.isascii() in Python 3.6 + * Distinguish an empty password in URL from a password not provided at all + * Fixed annotations for optional parameters of URL.build + * Use None as default value of user parameter of URL.build + * Enforce building C Accelerated modules when installing from source tarball, + use YARL_NO_EXTENSIONS environment variable for falling back to (slower) + Pure Python implementation + * Fix quoting of plus in path by pure python version + * Don't create a new URL if fragment is unchanged + * Included in error msg the path that produces starting slash forbidden error + * Skip slow IDNA encoding for ASCII-only strings + +------------------------------------------------------------------- +Sun Mar 3 13:52:01 UTC 2019 - Ondřej Súkup + +- update to 1.3.0 + * Fix annotations for query parameter + * An incoming query sequence can have int variables + * Add URL.explicit_port property + * Give a friendlier error when port cant be converted to int + * bool(URL()) now returns False + * Fix annotations for build + * Fix annotations for cached_property + * Accept str subclasses in URL constructor + * Forbid inheritance, replace __init__ with __new__ + * Support PEP-561 (provide type hinting marker) + +------------------------------------------------------------------- +Wed Aug 29 09:17:59 UTC 2018 - tchvatal@suse.com + +- Raise multidict requirement to match up setup.py + +------------------------------------------------------------------- +Sat Feb 24 18:28:57 UTC 2018 - arun@gmx.de + +- update to version 1.1.1: + * Fix performance regression: don’t encode enmpty netloc (#170) + +------------------------------------------------------------------- +Sat Feb 10 18:01:42 UTC 2018 - arun@gmx.de + +- update to version 1.1.0: + * Make pure Python quoter consistent with Cython version (#162) + +- changes from version 1.0.0: + * Use fast path if quoted string does not need requoting (#154) + * Speed up quoting/unquoting by _Quoter and _Unquoter classes (#155) + * Drop yarl.quote and yarl.unquote public functions (#155) + * Add custom string writer, reuse static buffer if available (#157) + Code is 50-80 times faster than Pure Python version (was 4-5 times + faster) + * Don’t recode IP zone (#144) + * Support encoded=True in yarl.URL.build() (#158) + * Fix updating query with multiple keys (#160) + +------------------------------------------------------------------- +Thu Jan 11 23:59:33 UTC 2018 - arun@gmx.de + +- update to version 0.18.0: + * Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible + (#152) + +------------------------------------------------------------------- +Thu Jan 4 17:17:54 UTC 2018 - arun@gmx.de + +- specfile: + * update copyright year + * require python-idna + +- update to version 0.17.0: + * Add idna requirement + * update to idna 2008 and test + * Update mypy from 0.550 to 0.560 + * Better fix for #141 + +------------------------------------------------------------------- +Sat Dec 9 17:54:08 UTC 2017 - arun@gmx.de + +- removed test conditional as requested in SR 555310 +- enabled tests +- require pytest-runner + +------------------------------------------------------------------- +Fri Dec 8 18:05:15 UTC 2017 - arun@gmx.de + +- update to version 0.16.0: + * Fix raising TypeError by url.query_string() after + url.with_query({}) (empty mapping) #141 + +------------------------------------------------------------------- +Sun Nov 26 21:20:07 UTC 2017 - arun@gmx.de + +- update to version 0.15.0: + * Add raw_path_qs attribute (#137) + +------------------------------------------------------------------- +Wed Nov 15 00:33:36 UTC 2017 - arun@gmx.de + +- update to version 0.14.2: + * Restore strict parameter as no-op in quote/unquote + +- changes from version 0.14.1: + * Restore strict parameter as no-op for sake of compatibility with + aiohttp 2.2 + +------------------------------------------------------------------- +Sun Nov 12 16:59:38 UTC 2017 - arun@gmx.de + +- update to version 0.14.0: + * Drop strict mode (#123) + * Fix “ValueError: Unallowed PCT %” when there’s a “%” in the url + (#124) + +------------------------------------------------------------------- +Tue Oct 31 02:41:59 UTC 2017 - arun@gmx.de + +- update to version 0.13.0: + * Document encoded parameter (#102) + * Support relative urls like ‘?key=value’ (#100) + * Unsafe encoding for QS fixed. Encode ; char in value param (#104) + * Process passwords without user names (#95) + +- changes from version 0.12.0: + * Properly support paths without leading slash in URL.with_path() + (#90) + * Enable type annotation checks + +------------------------------------------------------------------- +Thu Jul 13 19:22:44 UTC 2017 - sean.marlow@suse.com + +- Initial release v0.11.0. diff --git a/python-yarl.spec b/python-yarl.spec new file mode 100644 index 0000000..2e6552d --- /dev/null +++ b/python-yarl.spec @@ -0,0 +1,68 @@ +# +# spec file for package python-yarl +# +# 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} +Name: python-yarl +Version: 1.9.2 +Release: 0 +Summary: Yet another URL library +License: Apache-2.0 +URL: https://github.com/aio-libs/yarl/ +Source: https://files.pythonhosted.org/packages/source/y/yarl/yarl-%{version}.tar.gz +# PATCH-FIX-UPSTREAM 882-sq_bracket_in_URL_netloc.patch gh#aio-libs/yarl#876 mcepl@suse.com +# Correct square bracket handling in URL netloc +Patch0: 882-sq_bracket_in_URL_netloc.patch +BuildRequires: %{python_module Cython} +BuildRequires: %{python_module devel >= 3.7} +BuildRequires: %{python_module idna >= 2.0} +# test requirements +BuildRequires: %{python_module multidict >= 4.0} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-idna >= 2.0 +Requires: python-multidict >= 4.0 +%python_subpackages + +%description +The module provides a URL class for url parsing and changing. + +%prep +%autosetup -p1 -n yarl-%{version} +sed -i '/addopts/d' setup.cfg + +%build +export CFLAGS="%{optflags} -Wno-return-type" +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitearch} + +%check +%pytest_arch + +%files %{python_files} +%license LICENSE +%doc CHANGES.rst README.rst +%{python_sitearch}/yarl +%{python_sitearch}/yarl-%{version}*-info + +%changelog diff --git a/yarl-1.9.2.tar.gz b/yarl-1.9.2.tar.gz new file mode 100644 index 0000000..e4e03f1 --- /dev/null +++ b/yarl-1.9.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571 +size 184673