Releases: aio-libs/yarl
1.23.0
Features
-
Added support for
pydantic, the :class:~yarl.URLcould be used as a
field type inpydanticmodels seamlessly.Related issues and pull requests on GitHub:
#1607.
Packaging updates and notes for downstreams
-
The CI has been set up to notify Codecov about upload completion
-- by :user:webknjaz.With this, Codecov no longer needs to guess whether it received all
the intended coverage reports or not.Related issues and pull requests on GitHub:
#1577. -
The in-tree build backend allows the end-users appending
CFLAGSandLDFLAGSby setting respective environment
variables externally.It additionally sets up default compiler flags to perform
building with maximum optimization in release mode. This
makes the resulting artifacts shipped to PyPI smaller.When line tracing is requested, the compiler and linker
flags are configured to include as much information as
possible for debugging and coverage tracking. The
development builds are therefore smaller.-- by :user:
webknjazRelated issues and pull requests on GitHub:
#1586. -
The :pep:
517build backend now supports a new config
setting for controlling whether to build the project in-tree
or in a temporary directory. It only affects wheels and is
set up to build in a temporary directory by default. It does
not affect editable wheel builds — they will keep being
built in-tree regardless.-- by :user:
webknjazHere's an example of using this setting:
.. code-block:: console
$ python -m build
--config-setting=build-inplace=trueRelated issues and pull requests on GitHub:
#1590. -
Starting this version, when building the wheels is happening
in an automatically created temporary directory, the build
backend makes an effort to normalize the respective file
system path to a deterministic source checkout directory.-- by :user:
webknjazIt does so by injecting the
-ffile-prefix-mapcompiler
option into theCFLAGSenvironment variable as suggested
by knownreproducible build practices <https://reproducible-builds.org/docs/build-path/>__.The effect is that downstreams will get more reproducible
build results.Related issues and pull requests on GitHub:
#1591. -
Dropped Python 3.9 support; Python 3.10 is the minimal supported Python version
-- by :user:bdraco.Related issues and pull requests on GitHub:
#1609.
Contributor-facing changes
-
The deprecated license classifier was removed from :file:
setup.cfg
-- by :user:yegorich.Related issues and pull requests on GitHub:
#1550. -
The in-tree build backend allows the end-users appending
CFLAGSandLDFLAGSby setting respective environment
variables externally.It additionally sets up default compiler flags to perform
building with maximum optimization in release mode. This
makes the resulting artifacts shipped to PyPI smaller.When line tracing is requested, the compiler and linker
flags are configured to include as much information as
possible for debugging and coverage tracking. The
development builds are therefore smaller.-- by :user:
webknjazRelated issues and pull requests on GitHub:
#1586. -
The CI has been updated to consistently benchmark optimized
release builds -- by :user:webknjaz.When the release workflow is triggered, the pre-built wheels
ready to hit PyPI are being tested. Otherwise, the job
builds the project from source, while the rest of the
workflow uses debug builds for line tracing and coverage
collection.Related issues and pull requests on GitHub:
#1587.
1.20.1
Bug fixes
-
Started raising a :exc:
ValueErrorexception raised for corrupted
IPv6 URL values.These fixes the issue where exception :exc:
IndexErrorwas
leaking from the internal code because of not being handled and
transformed into a user-facing error. The problem was happening
under the following conditions: empty IPv6 URL, brackets in
reverse order.-- by :user:
MaelPic.Related issues and pull requests on GitHub:
#1512.
Packaging updates and notes for downstreams
-
Updated to use Cython 3.1 universally across the build path -- by :user:
lysnikolaou.Related issues and pull requests on GitHub:
#1514. -
Made Cython line tracing opt-in via the
with-cython-tracingbuild config setting -- by :user:bdraco.Previously, line tracing was enabled by default in :file:
pyproject.toml, which caused build issues for some users and made wheels nearly twice as slow.
Now line tracing is only enabled when explicitly requested viapip install . --config-setting=with-cython-tracing=trueor by setting theYARL_CYTHON_TRACINGenvironment variable.Related issues and pull requests on GitHub:
#1521.
1.22.0
1.21.0
Contributor-facing changes
-
The :file:
reusable-cibuildwheel.ymlworkflow has been refactored to
be more generic and :file:ci-cd.ymlnow holds all the configuration
toggles -- by :user:webknjaz.Related issues and pull requests on GitHub:
#1535. -
When building wheels, the source distribution is now passed directly
to thecibuildwheelinvocation -- by :user:webknjaz.Related issues and pull requests on GitHub:
#1536. -
Added CI for Python 3.14 -- by :user:
kumaraditya303.Related issues and pull requests on GitHub:
#1560.
1.20.0
Features
-
Implemented support for the free-threaded build of CPython 3.13 -- by :user:
lysnikolaou.Related issues and pull requests on GitHub:
#1456.
Packaging updates and notes for downstreams
-
Started building wheels for the free-threaded build of CPython 3.13 -- by :user:
lysnikolaou.Related issues and pull requests on GitHub:
#1456.
1.19.0
Bug fixes
-
Fixed entire name being re-encoded when using :py:meth:
yarl.URL.with_suffix-- by :user:NTFSvolume.Related issues and pull requests on GitHub:
#1468.
Features
-
Started building armv7l wheels for manylinux -- by :user:
bdraco.Related issues and pull requests on GitHub:
#1495.
Contributor-facing changes
-
GitHub Actions CI/CD is now configured to manage caching pip-ecosystem
dependencies usingre-actors/cache-python-deps_ -- an action by
:user:webknjazthat takes into account ABI stability and the exact
version of Python runtime... _
re-actors/cache-python-deps:
https://github.com/marketplace/actions/cache-python-depsRelated issues and pull requests on GitHub:
#1471. -
Increased minimum
propcache_ version to 0.2.1 to fix failing tests -- by :user:bdraco... _
propcache:
https://github.com/aio-libs/propcacheRelated issues and pull requests on GitHub:
#1479. -
Added all hidden folders to pytest's
norecursedirsto prevent it
from trying to collect tests there -- by :user:lysnikolaou.Related issues and pull requests on GitHub:
#1480.
Miscellaneous internal changes
-
Improved accuracy of type annotations -- by :user:
Dreamsorcerer.Related issues and pull requests on GitHub:
#1484. -
Improved performance of parsing query strings -- by :user:
bdraco. -
Improved performance of the C unquoter -- by :user:
bdraco.
1.18.3
Bug fixes
-
Fixed uppercase ASCII hosts being rejected by :meth:
URL.build() <yarl.URL.build>and :py:meth:~yarl.URL.with_host-- by :user:bdraco.
Miscellaneous internal changes
-
Improved performances of multiple path properties on cache miss -- by :user:
bdraco.Related issues and pull requests on GitHub:
#1443.
1.18.2
This release also failed to fully upload and was yanked from PyPI. Please use 1.18.3 instead.
No significant changes.
1.18.1
This release failed to fully upload and was yanked from PyPI. Please use 1.18.2 instead.
Miscellaneous internal changes
-
Improved cache performance when :class:
~yarl.URLobjects are constructed from :py:meth:~yarl.URL.buildwithencoded=True-- by :user:bdraco.Related issues and pull requests on GitHub:
#1432. -
Improved cache performance for operations that produce a new :class:
~yarl.URLobject -- by :user:bdraco.
1.18.0
Features
-
Added
keep_queryandkeep_fragmentflags in the :py:meth:yarl.URL.with_path, :py:meth:yarl.URL.with_nameand :py:meth:yarl.URL.with_suffixmethods, allowing users to optionally retain the query string and fragment in the resulting URL when replacing the path -- by :user:paul-nameless.
Contributor-facing changes
-
Started running downstream
aiohttptests in CI -- by :user:Cycloctane.Related issues and pull requests on GitHub:
#1415.
Miscellaneous internal changes
-
Improved performance of converting :class:
~yarl.URLto a string -- by :user:bdraco.Related issues and pull requests on GitHub:
#1422.