# # spec file for package python-yarl # # Copyright (c) 2025 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.18.3 Release: 2.3 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 Patch1: reproducible.patch BuildRequires: %{python_module Cython} BuildRequires: %{python_module devel >= 3.7} BuildRequires: %{python_module expandvars} BuildRequires: %{python_module idna >= 2.0} # test requirements BuildRequires: %{python_module multidict >= 4.0} BuildRequires: %{python_module hypothesis >= 6.0} BuildRequires: %{python_module pip} BuildRequires: %{python_module propcache >= 0.2.0} BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-idna >= 2.0 Requires: python-multidict >= 4.0 Requires: python-propcache >= 0.2.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 # Remove pytest_cov build requirement sed -i 's/-p pytest_cov/-p no:pytest_cov/' pytest.ini sed -i '/--cov/d' pytest.ini # hypothesis warns about norecursedirs, but warnings are treated as errors. Resolving both problems. rm pytest.ini %build export CFLAGS="%{optflags} -Wno-return-type" %pyproject_wheel %install %pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitearch} %check # Ignore benchmarks tests that requires pytest-codspeed package %pytest_arch --ignore tests/test_url_benchmarks.py --ignore tests/test_quoting_benchmarks.py %files %{python_files} %license LICENSE %doc CHANGES.rst README.rst %{python_sitearch}/yarl %{python_sitearch}/yarl-%{version}.dist-info %changelog * Wed Feb 26 2025 Markéta Machová - Delete pytest.ini * hypothesis added a warning about pytest not looking into its hidden working directory * warnings were treated as errors here * resolving both problems by returning to default pytest settings * Thu Dec 5 2024 Daniel Garcia - Update to 1.18.3: * Fixed uppercase ASCII hosts being rejected by :meth:URL.build() and :py:meth:~yarl.URL.with_host -- by :user:bdraco. * Improved performances of multiple path properties on cache miss -- by :user:bdraco. 1.18.0: * Added keep_query and keep_fragment flags in the :py:meth:yarl.URL.with_path, :py:meth:yarl.URL.with_name and :py:meth:yarl.URL.with_suffix methods, allowing users to optionally retain the query string and fragment in the resulting URL when replacing the path -- by :user:paul-nameless. 1.17.2: * Stopped implicitly allowing the use of Cython pre-release versions when building the distribution package -- by :user:ajsanchezsanz and :user:markgreene74. * Fixed a bug causing :attr:~yarl.URL.port to return the default port when the given port was zero -- by :user:gmacon. * Make error messages include details of incorrect type when port is not int in :py:meth:~yarl.URL.build. -- by :user:Cycloctane. * Stopped implicitly allowing the use of Cython pre-release versions when building the distribution package -- by :user:ajsanchezsanz and :user:markgreene74. * Improved performance of the :py:meth:~yarl.URL.joinpath method -- by :user:bdraco. 1.17.1: * Improved performance of many URL methods – by @bdraco. * Improved performance of passing a dict or str to extend_query() – by @bdraco. 1.17.0: * Added host_port_subcomponent which returns the RFC 3986 Section 3.2.2 host and RFC 3986 Section 3.2.3 port subcomponent – by @bdraco. 1.16.0: * Fixed blocking I/O to load Python code when creating a new URL with non-ascii characters in the network location part – by @bdraco. * Migrated to using a single cache for encoding hosts – by @bdraco. * Passing ip_address_size and host_validate_size to cache_configure() is deprecated in favor of the new encode_host_size parameter and will be removed in a future release. For backwards compatibility, the old parameters affect the encode_host cache size. * Improved performance of constructing URL – by @bdraco. * Improved performance of calling build() and constructing unencoded URL – by @bdraco. * Reworked the internal encoding cache to improve performance on cache hit – by @bdraco. 1.15.5: * Improved performance of the joinpath() method – by @bdraco. * Improved performance of the extend_query() method – by @bdraco. * Improved performance of the origin() method – by @bdraco. * Improved performance of the with_path() method – by @bdraco. * Improved performance of the with_query() method – by @bdraco. * Improved performance of the update_query() method – by @bdraco. * Improved performance of the join() method – by @bdraco. * Improved performance of URL equality checks – by @bdraco. * Improved performance of URL methods that modify the network location – by @bdraco. * Improved performance of the with_fragment() method – by @bdraco. * Improved performance of calculating the hash of URL objects – by @bdraco. * Improved performance of the relative() method – by @bdraco. * Improved performance of the with_name() method – by @bdraco. * Improved performance of parent – by @bdraco. * Improved performance of the with_scheme() method – by @bdraco. 1.15.4: * Improved performance of the quoter when all characters are safe – by @bdraco. * Improved performance of unquoting strings – by @bdraco. * Improved performance of calling build() – by @bdraco. 1.15.3: * Fixed build() failing to validate paths must start with a / when passing authority – by @bdraco. * Removed support for Python 3.8 as it has reached end of life – by @bdraco. * Improved performance of constructing URL when the net location is only the host – by @bdraco. 1.15.2: * Improved performance of converting URL to a string – by @bdraco. * Improved performance of joinpath() – by @bdraco. * Improved performance of constructing query strings from MultiDict – by @bdraco. * Improved performance of constructing query strings with int values – by @bdraco. 1.15.1: * Improved performance of calling build() – by @bdraco. * Improved performance of all URL methods that create new URL objects – by @bdraco. * Improved performance of URL methods that modify the network location – by @bdraco. 1.15.0: * Fixed validation with with_scheme() when passed scheme is not lowercase – by @bdraco. * Improved performance of constructing unencoded URL objects – by @bdraco. * Added a cache for parsing hosts to reduce overhead of encoding URL – by @bdraco. * Improved performance of constructing query strings from Mapping – by @bdraco. * Improved performance of converting URL objects to strings – by @bdraco. * Wed Oct 9 2024 John Paul Adrian Glaubitz - Update to 1.14.0 * Switched to using the :mod:`propcache ` package for property caching * Started testing with Hypothesis * Improved performance of :py:meth:`~yarl.URL.is_default_port` when no explicit port is set * Improved performance of converting :class:`~yarl.URL` to a string when no explicit port is set * Improved performance of the :py:meth:`~yarl.URL.origin` method * Improved performance of encoding hosts - from version 1.13.1 * Improved performance of calling :py:meth:`~yarl.URL.build` with ``authority`` - from version 1.13.0 * Started rejecting ASCII hostnames with invalid characters. For host strings that look like authority strings, the exception message includes advice on what to do instead * Fixed IPv6 addresses missing brackets when the :class:`~yarl.URL` was converted to a string * Added :attr:`~yarl.URL.host_subcomponent` which returns the :rfc:`3986#section-3.2.2` host subcomponent - Update BuildRequires from requirements/test.txt * Wed Sep 25 2024 Nico Krapp - update to 1.12.1 - update to 1.12.0 * Added attr `~yarl.URL.path_safe` to be able to fetch the path without %%2F and %%25 decoded * Restore decoding %%2F (/) in URL.path * Improved performance of processing paths * Tue Sep 3 2024 Adrian Schröter - updaze to 1.9.7: * Removed support :rfc:3986#section-3.2.3 port normalization when the scheme is not one of http, https, wss, or ws * Joining URLs with empty segments has been changed to match :rfc:3986 * Tue Mar 12 2024 Bernhard Wiedemann - restore correct reproducible.patch * Tue Jan 16 2024 Dirk Müller - restore reproducible.patch to not add a random tmp path (boo#1062303) * Sun Jan 14 2024 Dirk Müller - update to 1.9.4: * Started raising :py:exc:`TypeError` when a string value is passed into :py:meth:`~yarl.URL.build` as the port argument - - by :user:`commonism`. Previously the empty string as port would create malformed URLs when rendered as string representations. * Started raising :py:exc:`TypeError` when a string value is passed into :py:meth:`~yarl.URL.build` as the port argument * Previously the empty string as port would create malformed URLs when rendered as string representations. (:issue:`883`) * The leading -- has been dropped from the PEP 517 in-tree build backend config setting names. --pure-python is now just pure-python -- by :user:`webknjaz`. The usage now looks as follows: $ python -m build \ --config-setting=pure- python=true \ --config-setting=with-cython-tracing=true (:issue:`963`) * The leading -- has been dropped from the PEP 517 in-tree build backend config setting names. --pure-python is now just pure-python -- by :user:`webknjaz`. * It is now possible to request line tracing in Cython builds using the with-cython-tracing PEP 517 config setting -- :user:`webknjaz`. This can be used in CI and development environment to measure coverage on Cython modules, but is not normally useful to the end-users or downstream packagers. Here's a usage example: $ python -Im pip install . --config- settings=with-cython-tracing=true For editable installs, this setting is on by default. Otherwise, it's off unless requested explicitly. (:issue:`962`) - drop reproducible.patch (upstream) * Tue Dec 12 2023 Bernhard Wiedemann - Add reproducible.patch to not add a random tmp path into the package (boo#1062303) * Mon Nov 27 2023 Dirk Müller - update to 1.9.3: * Stopped dropping trailing slashes in :py:meth:`~yarl.URL.joinpath` * Started accepting string subclasses in ``__truediv__()`` operations (``URL / segment``) * Fixed the human representation of URLs with square brackets in usernames and passwords * Updated type hints to include ``URL.missing_port()``, ``URL.__bytes__()`` and the ``encoding`` argument to :py:meth:`~yarl.URL.joinpath` * Integrated Cython 3 to enable building *yarl* under Python 3.12 * Declared modern ``setuptools.build_meta`` as the :pep:`517` build backend in :file:`pyproject.toml` explicitly * Converted most of the packaging setup into a declarative :file:`setup.cfg` * Declared Python 3.12 supported officially in the distribution package metadata * A regression test for no-host URLs was added per :issue:`821` * and :rfc:`3986` * MyST is now integrated in Sphinx - drop 882-sq_bracket_in_URL_netloc.patch (upstream) * Tue Jul 4 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 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 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 2023 Dirk Müller - add sle15_python_module_pythons (jsc#PED-68) * Thu Apr 13 2023 Matej Cepl - Make calling of %%{sle15modernpython} optional. * Thu Mar 2 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 2023 Steve Kowalik - Add patch support-python-311.patch: * Skip a test under Python 3.11. * Wed Dec 7 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 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 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 2021 Ben Greiner - Unset -Werror=return-type for python39 - Only install typing_extensions for Python < 3.8 * Tue Feb 23 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 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 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 2020 Benjamin Greiner - remove c source file from package (rpmlint error) - needs typing-extensions * Tue Jul 28 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 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 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 2018 tchvatal@suse.com - Raise multidict requirement to match up setup.py * Sat Feb 24 2018 arun@gmx.de - update to version 1.1.1: * Fix performance regression: don’t encode enmpty netloc (#170) * Sat Feb 10 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 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 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 2017 arun@gmx.de - removed test conditional as requested in SR 555310 - enabled tests - require pytest-runner * Fri Dec 8 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 2017 arun@gmx.de - update to version 0.15.0: * Add raw_path_qs attribute (#137) * Wed Nov 15 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 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 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 2017 sean.marlow@suse.com - Initial release v0.11.0.