This repository has been archived by the owner on Jul 17, 2024. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v3
->v4
v3
->v4
v4
->v5
v3
->v4
==4.9.1
->==5.2.2
v2.11.1
->v2.19.2
>=4, <5
->>=5, <6
==4.0.0
->==5.0.0
>=2.5.0, <2.6.0
->>=3.6.1, <3.7.0
==2.5.0
->==3.6.1
v1
->v2
Release Notes
actions/checkout (actions/checkout)
v4
Compare Source
actions/download-artifact (actions/download-artifact)
v4
Compare Source
actions/setup-python (actions/setup-python)
v5
Compare Source
actions/upload-artifact (actions/upload-artifact)
v4
Compare Source
lxml/lxml (lxml)
v5.2.2
Compare Source
==================
Bugs fixed
GH#417: The
test_feed_parser
test could fail iflxml_html_clean
was not installed.It is now skipped in that case.
LP#2059910: The minimum CPU architecture for the Linux x86 binary wheels was set back to
"core2", without SSE 4.2.
If libxml2 uses iconv, the compile time version is available as
etree.ICONV_COMPILED_VERSION
.v5.2.1
Compare Source
==================
Bugs fixed
LP#2059910: The minimum CPU architecture for the Linux x86 binary wheels was set back to
"core2", but with SSE 4.2 enabled.
LP#2059977:
Element.iterfind("//absolute_path")
failed with aSyntaxError
where it should have issued a warning.
GH#416: The documentation build was using the non-standard
which
command.Patch by Michał Górny.
v5.2.0
Compare Source
==================
Other changes
LP#1958539: The
lxml.html.clean
implementation suffered from several (only if used)security issues in the past and was now extracted into a separate library:
https://github.com/fedora-python/lxml_html_clean
Projects that use lxml without "lxml.html.clean" will not notice any difference,
except that they won't have potentially vulnerable code installed.
The module is available as an "extra" setuptools dependency "lxml[html_clean]",
so that Projects that need "lxml.html.clean" will need to switch their requirements
from "lxml" to "lxml[html_clean]", or install the new library themselves.
The minimum CPU architecture for the Linux x86 binary wheels was upgraded to
"sandybridge" (launched 2011), and glibc 2.28 / gcc 12 (manylinux_2_28) wheels were added.
Built with Cython 3.0.10.
v5.1.1
Compare Source
==================
Bugs fixed
LP#2048920:
iterlinks()
inlxml.html
rejectedbytes
input in 5.1.0.High source line numbers from the parser are no longer truncated
(up to a C
long
) when using libxml2 2.11 or later.Other changes
GH#407: A compatibility test was adapted to recent expat versions.
Patch by Miro Hrončok.
Binary wheels use the library versions libxml2 2.12.6 and libxslt 1.1.39.
Windows binary wheels use the library versions libxml2 2.11.7 and libxslt 1.1.39.
Built with Cython 3.0.9.
v5.1.0
Compare Source
==================
Features added
Bugs fixed
Cleaner()
interpreted an accidentally provided string parameterfor the
host_whitelist
as list of characters and silently failed to reject any hosts.Passing a non-collection is now rejected.
Other changes
Support for Python 2.7 and Python versions < 3.6 was removed.
The wheel build was migrated to use
cibuildwheel
.Patch by Primož Godec.
v5.0.2
Compare Source
==================
Other changes
GH#407: A compatibility test was adapted to recent expat versions.
Patch by Miro Hrončok.
Binary wheels use the library versions libxml2 2.12.6 and libxslt 1.1.39.
Built with Cython 3.0.9.
v5.0.1
Compare Source
==================
Bugs fixed
LP#2046208: Parsing non-BMP Python Unicode strings could fail on macOS.
LP#2044225: When incrementally parsing broken HTML, reporting start events on
missing structural tags failed and could lead to subsequent exceptions.
LP#2045435: Some (not all) issues with stricter C compilers were resolved.
The binary wheels in the 5.0.0 release did not validate cleanly (but installed ok).
.. _latest_release:
v5.0.0
Compare Source
==================
Features added
Character escaping in
C14N2
serialisation now uses a single pass over the textinstead of searching for each unescaped character separately.
Early support for Python 3.13a2 was added.
Bugs fixed
LP#1976304: The
Element.addnext()
method previously inserted the new elementbefore existing tail text. The tail text of both sibling elements now stays on
the respective elements.
LP#1980767, GH#379:
TreeBuilder.close()
could fail with aTypeError
afterparsing incorrect input. Original patch by Enrico Minack.
Element.itertext(with_tail=False)
returned the tail text of comments andprocessing instructions, despite the explicit option.
GH#370: A crash with recent libxml2 2.11.x versions was resolved.
Patch by Michael Schlenker.
A compile problem with recent libxml2 2.12.x versions was resolved.
The internal exception handling in C callbacks was improved for Cython 3.0.
The exception declarations of
xmlInputReadCallback
,xmlInputCloseCallback
,xmlOutputWriteCallback
andxmlOutputCloseCallback
intree.pxd
werecorrected to prevent running Python code or calling into the C-API with a live
exception set.
GH#385: The long deprecated
unittest.m̀akeSuite()
function is no longer used.Patch by Miro Hrončok.
LP#1522052: A file-system specific test is now optional and should no longer fail
on systems that don't support it.
GH#392: Some tests were adapted for libxml2 2.13.
Patch by Nick Wellnhofer.
Contains all fixes from lxml 4.9.4.
Other changes
LP#1742885: lxml no longer expands external entities (XXE) by default to prevent
the security risk of loading arbitrary files and URLs. If this feature is needed,
it can be enabled in a backwards compatible way by using a parser with the option
resolve_entities=True
. The new default isresolve_entities='internal'
.With libxml2 2.10.4 and later (as provided by the lxml 5.0 binary wheels),
parsing HTML tags with "prefixes" no longer builds a namespace dictionary
in
nsmap
but considers theprefix:name
string the actual tag name.With older libxml2 versions, since 2.9.11, the prefix was removed. Before
that, the prefix was parsed as XML prefix.
lxml 5.0 does not try to hide this difference but now changes the ElementPath
implementation to let
element.find("part1:part2")
search for the tagpart1:part2
in documents parsed as HTML, instead of looking only forpart2
.LP#2024343: The validation of the schema file itself is now optional in the
ISO-Schematron implementation. This was done because some lxml distributions
discard the RNG validation schema file due to licensing issues. The validation
can now always be disabled with
Schematron(..., validate_schema=False)
.It is enabled by default if available and disabled otherwise. The module
constant
lxml.isoschematron.schematron_schema_valid_supported
can be usedto detect whether schema file validation is available.
Some redundant and long deprecated methods were removed:
parser.setElementClassLookup()
,xslt_transform.apply()
,xpath.evaluate()
.Some incorrect declarations were removed from
python.pxd
. In general, this fileshould not be used by external Cython code. Use the C-API declarations provided by
Cython itself instead.
Binary wheels use the library versions libxml2 2.12.3 and libxslt 1.1.39.
Built with Cython 3.0.7, updated to follow recent changes in Cython 3.1-dev.
v4.9.4
Compare Source
==================
Bugs fixed
LP#2046398: Inserting/replacing an ancestor into a node's children could loop indefinitely.
LP#1980767, GH#379:
TreeBuilder.close()
could fail with aTypeError
afterparsing incorrect input. Original patch by Enrico Minack.
LP#1522052: A file-system specific test is now optional and should no longer fail
on systems that don't support it.
Other changes
Wheels include zlib 1.3, libxml2 2.10.3 and libxslt 1.1.39
(zlib 1.2.12, libxml2 2.10.3 and libxslt 1.1.37 on Windows).
Built with Cython 0.29.37.
v4.9.3
Compare Source
==================
Bugs fixed
lxml.objectify
accepted non-decimal numbers like²²²
as integers.A memory leak in
lxml.html.clean
was resolved by switching to Cython 0.29.34+.GH#348: URL checking in the HTML cleaner was improved.
Patch by Tim McCormack.
GH#371, GH#373: Some regex strings were changed to raw strings to fix Python warnings.
Patches by Jakub Wilk and Anthony Sottile.
Other changes
Wheels include zlib 1.2.13, libxml2 2.10.3 and libxslt 1.1.38
(zlib 1.2.12, libxml2 2.10.3 and libxslt 1.1.37 on Windows).
Built with Cython 0.29.36 to adapt to changes in Python 3.12.
v4.9.2
Compare Source
==================
Bugs fixed
from a failed parser run leak into later parser runs. This bug was worked around
in lxml and resolved in libxml2 2.10.0.
https://gitlab.gnome.org/GNOME/libxml2/-/issues/378
Other changes
LP#1981760:
Element.attrib
now registers ascollections.abc.MutableMapping
.lxml now has a static build setup for macOS on ARM64 machines (not used for building wheels).
Patch by Quentin Leffray.
pypa/cibuildwheel (pypa/cibuildwheel)
v2.19.2
: Version 2.19.2Compare Source
--no-isolation
withbuild[uv]
build-frontend. (#1889)v2.19.1
: Version 2.19.1Compare Source
v2.19.0
: Version 2.19.0Compare Source
Release post: https://iscinumpy.dev/post/cibuildwheel-2-19-0/
--platform pyodide
orCIBW_PLATFORM: pyodide
on Linux with a host Python 3.12 to build WebAssembly wheels. Not accepted on PyPI currently, but usable directly in a website using Pyodide, for live docs, etc. (#1456, #1859)build[uv]
backend, which will take a pre-existing uv install (or installcibuildwheel[uv]
) and useuv
for all environment setup and installs on Python 3.8+. This is significantly faster in most cases. (#1856)VIRTUAL_ENV
variable now set. (#1842)v2.18.1
Compare Source
cp313t-*
, new optionCIBW_FREE_THREADED_SUPPORT
/tool.cibuildwheel.free-threaded-support
required to opt-in. See the docs for more information. (#1831)container-engine
is now a build (non-global) option. (#1792)v2.18.0
Compare Source
While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.13 will be available in cibuildwheel without the flag. (#1815)
musllinux_1_2
. You can set the oldermusllinux_1_1
via config if needed. (#1817)v2.17.0
Compare Source
before-build
orenvironment
, and you just want to add an extra command or environment variable, you can just append (or prepend) to the previous config. See the docs for more information. (#1730)macos-14
as anos
of your job in your workflow file. You can also keepmacos-13
in your build matrix to build x86_64. Check out the new GitHub Actions example config.--platform
to run cibuildwheel locally! Instead it will detect your platform automatically. This was a safety feature, no longer necessary. (#1727)pyproject.toml
, projects withpyproject.toml
are already getting fresh versions of theirbuild-system.requires
installed into an isolated environment. (#1725)build
frontend. Instead it will be extended. (#1675)v2.16.5
Compare Source
macos-14
arm64 runners (#1743)v2.16.4
Compare Source
🛠 Update manylinux pins to upgrade from a problematic PyPy version. (#1737)
v2.16.3
Compare Source
/host
, through thedisable_host_mount
suboption onCIBW_CONTAINER_ENGINE
.v2.16.2
Compare Source
CIBW_DEBUG_KEEP_CONTAINER
to stop cibuildwheel deleting build containers after the build finishes. (#1620)[tool.cibuildwheel]
checking by adding a schema compatible with the validate-pyproject tool (#1622, #1628, #1629)CIBW_CONTAINER_ENGINE
andCIBW_BUILD_FRONTEND
options to not break arguments on:
characters (#1621)CIBW_ENVIRONMENT
andCIBW_ENVIRONMENT_PASS
so thatCIBW_ENVIRONMENT
assignments can reference environment variables passed through from the host machine. (#1617)manylinux-interpreters
tool (#1630)v2.16.1
Compare Source
linux32
in containers when necessary (#1599)v2.16.0
Compare Source
requires_python
auto-detection from setup.py when the call tosetup()
is within anif __name__ == "__main__"
block (#1613)--only
can now select prerelease-pythons (#1564)v2.15.0
Compare Source
v2.14.1
Compare Source
v2.14.0
Compare Source
{wheel}
placeholder in CIBW_TEST_COMMAND (#1533)v2.13.1
Compare Source
v<major>.<minor>
tag for use in GitHub Actions workflow files. If you use this, you'll get the latest patch release within a minor version. Additionally, Dependabot won't send you PRs for patch releases. (#1517)v2.13.0
Compare Source
✨ Adds CPython 3.12 support, under the prerelease flag CIBW_PRERELEASE_PYTHONS. This version of cibuildwheel uses 3.12.0b1.
While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.12 will be available in cibuildwheel without the flag. (#1507)
✨ Adds the ability to pass arguments to the container engine when the container is created, using the CIBW_CONTAINER_ENGINE option. (#1499)
v2.12.3
Compare Source
v2.12.2
Compare Source
build
. (#1474)v2.12.1
Compare Source
v2.12.0
Compare Source
v2.11.4
Compare Source
v2.11.3
Compare Source
CIBW_TEST_COMMAND
option - not specifying path using the{project}
placeholder (#1336)v2.11.2
Compare Source
MACOSX_DEPLOYMENT_TARGET
on arm64 (#1312)pytest-dev/pytest-cov (pytest-cov)
v5.0.0
Compare Source
Contributed by Matthias Reichenbach in
#​623 <https://github.com/pytest-dev/pytest-cov/pull/623>
_.Contributed by Christian Clauss and Hugo van Kemenade in
#​630 <https://github.com/pytest-dev/pytest-cov/pull/630>
,#​631 <https://github.com/pytest-dev/pytest-cov/pull/631>
,#​632 <https://github.com/pytest-dev/pytest-cov/pull/632>
_ and#​633 <https://github.com/pytest-dev/pytest-cov/pull/633>
_.pyproject.toml
example in the docs.Contributed by Dawn James in
#​626 <https://github.com/pytest-dev/pytest-cov/pull/626>
_.Christian Clauss in
#​584 <https://github.com/pytest-dev/pytest-cov/pull/584>
_.pytest-dev/pytest-xdist (pytest-xdist)
v3.6.1
Compare Source
===============================
Bug Fixes
#​1071 <https://github.com/pytest-dev/pytest-xdist/issues/1071>
_: Add backward compatibility for deadlock issue with theexecnet
newmain_thread_only
"execmodel" triggered when pytest-cov accesses rinfo.v3.6.0
Compare Source
===============================
This release was YANKED due to a regression fixed in 3.6.1.
Features
#​1027 <https://github.com/pytest-dev/pytest-xdist/pull/1027>
_:pytest-xdist
workers now always execute the tests in the main thread.Previously some tests might end up executing in a separate thread other than
main
in the workers, due to some internalexecnet`` details. This can cause problems specially with async frameworks where the event loop is running in the ``main`` thread (for example
#620 #620`__).Bug Fixes
#​1024 <https://github.com/pytest-dev/pytest-xdist/issues/1024>
_: Added proper handling ofshouldstop
(such as set by--max-fail
) andshouldfail
conditions in workers.Previously, a worker might have continued executing further tests before the controller could terminate the session.
#​1028 <https://github.com/pytest-dev/pytest-xdist/issues/1028>
_: Fixed compatibility issue betweenlooponfail
and editable installs.#​620 <https://github.com/pytest-dev/pytest-xdist/issues/620>
_: Use the newmain_thread_only
execnet
"execmodel" so that code which expects to only run in the main thread will now work as expected.#​937 <https://github.com/pytest-dev/pytest-xdist/issues/937>
_: Fixed a bug where plugin would raise an incompatibility error with--pdb
despite using-n0
.Removals
#​1053 <https://github.com/pytest-dev/pytest-xdist/issues/1053>
_: Dropped support for Python 3.7.#​1057 <https://github.com/pytest-dev/pytest-xdist/issues/1057>
_: pytest>=7.0.0 is now required.execnet>=2.1.0 is now required.
Trivial Changes
#​1020 <https://github.com/pytest-dev/pytest-xdist/issues/1020>
_: pytest-xdist'ssetup.py
file is removed.If you relied on this file, e.g. to install pytest using
setup.py install
,please see
Why you shouldn't invoke setup.py directly <https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html#summary>
_ for alternatives.#​1057 <https://github.com/pytest-dev/pytest-xdist/issues/1057>
_: The internals of pytest-xdist are now fully typed. The typing is not exposed yet.#​996 <https://github.com/pytest-dev/pytest-xdist/issues/996>
_: Adjusted license file format and content to ensure security scanners will identity the license.v3.5.0
Compare Source
===============================
Features
#​632 <https://github.com/pytest-dev/pytest-xdist/issues/632>
_:--dist=loadscope
now sorts scopes by number of tests to assign largest scopes early -- in many cases this should improve overall test session running time, as there is less chance of a large scope being left to be processed near the end of the session, leaving other workers idle.v3.4.0
Compare Source
===============================
Features
#​963 <https://github.com/pytest-dev/pytest-xdist/issues/963>
_: Wait for workers to finish reporting when test run stops early.This makes sure that the results of in-progress tests are displayed.
Previously these reports were being discarded, losing information about the
test run.
#​965 <https://github.com/pytest-dev/pytest-xdist/issues/965>
_: Added support for Python 3.12.v3.3.1
Compare Source
===============================
Bug Fixes
#​907 <https://github.com/pytest-dev/pytest-xdist/issues/907>
_: Avoid remote calls during startup asexecnet
by default does not ensure remote affinity with themain thread and might accidentally schedule the pytest worker into a non-main thread, which breaks numerous frameworks,
for example
asyncio
,anyio
,PyQt/PySide
, etc.A more safe correction will require thread affinity in
execnet
(pytest-dev/execnet#96 <https://github.com/pytest-dev/execnet/issues/96>
__).v3.3.0
Compare Source
===============================
Features
#​555 <https://github.com/pytest-dev/pytest-xdist/issues/555>
_: Improved progress output when collecting nodes to be less verbose.v3.2.1
Compare Source
===============================
Bug Fixes
#​884 <https://github.com/pytest-dev/pytest-xdist/issues/884>
_: Fixed hang inworksteal
scheduler.v3.2.0
Compare Source
===============================
Improved Documentation
#​863 <https://github.com/pytest-dev/pytest-xdist/issues/863>
_: Document limitations for debugging due to standard I/O of workers not being forwarded. Also, mention remote debugging as a possible workaround.Features
#​855 <https://github.com/pytest-dev/pytest-xdist/issues/855>
_: Users can now configureload
scheduling precision using--maxschedchunk
commandline option.
#​858 <https://github.com/pytest-dev/pytest-xdist/issues/858>
: Newworksteal
scheduler, based on the idea ofwork stealing <https://en.wikipedia.org/wiki/Work_stealing>
. It's similar toload
scheduler, but it should handle tests with significantly differing duration better, and, at the same time, it should provide similar or better reuse of fixtures.Trivial Changes
#​870 <https://github.com/pytest-dev/pytest-xdist/issues/870>
_: Make the tests pass even when$PYTEST_XDIST_AUTO_NUM_WORKERS
is set.v3.1.0
Compare Source
===============================
Features
#​789 <https://github.com/pytest-dev/pytest-xdist/issues/789>
_: Users can now set a default distribution mode in their configuration file:.. code-block:: ini
#​842 <https://github.com/pytest-dev/pytest-xdist/issues/842>
_: Python 3.11 is now officially supported.Removals
#​842 <https://github.com/pytest-dev/pytest-xdist/issues/842>
_: Python 3.6 is no longer supported.v3.0.2
Compare Source
===============================
Bug Fixes
#​813 <https://github.com/pytest-dev/pytest-xdist/issues/813>
_: Cancel shutdown when a crashed worker is restarted.Deprecations
#​825 <https://github.com/pytest-dev/pytest-xdist/issues/825>
_: The--rsyncdir
command line argument andrsyncdirs
config variable are deprecated.The rsync feature will be removed in pytest-xdist 4.0.
#​826 <https://github.com/pytest-dev/pytest-xdist/issues/826>
_: The--looponfail
command line argument andlooponfailroots
config variable are deprecated.The loop-on-fail feature will be removed in pytest-xdist 4.0.
Improved Documentation
#​791 <https://github.com/pytest-dev/pytest-xdist/issues/791>
_: Document thepytest_xdist_auto_num_workers
hook.#​796 <https://github.com/pytest-dev/pytest-xdist/issues/796>
_: Added known limitations section to documentation.#​829 <https://github.com/pytest-dev/pytest-xdist/issues/829>
_: Document the-n logical
option.Features
#​792 <https://github.com/pytest-dev/pytest-xdist/issues/792>
_: The environment variablePYTEST_XDIST_AUTO_NUM_WORKERS
can now be used tospecify the default for
-n auto
and-n logical
.#​812 <https://github.com/pytest-dev/pytest-xdist/issues/812>
_: Partially restore old initial batch distribution algorithm inLoadScheduling
.pytest orders tests for optimal sequential execution - i. e. avoiding
unnecessary setup and teardown of fixtures. So executing tests in consecutive
chunks is important for optimal performance.
In v1.14, initial test distribution in
LoadScheduling
was changed toround-robin, optimized for the corner case, when the number of tests is less
than
2 * number of nodes
. At the same time, it became worse for all othercases.
For example: if some tests use some "heavy" fixture, and these tests fit into
the initial batch, with round-robin distribution the fixture will be created
min(n_tests, n_workers)
times, no matter how many other tests there are.With the old algorithm (before v1.14), if there are enough tests not using
the fixture, the fixture was created only once.
So restore the old behavior for typical cases where the number of tests is
much greater than the number of workers (or, strictly speaking, when there
are at least 2 tests for every node).
Removals
#​468 <https://github.com/pytest-dev/pytest-xdist/issues/468>
_: The--boxed
command-line option has been removed. If you still need this functionality, installpytest-forked <https://pypi.org/project/pytest-forked>
__ separately.Trivial Changes
#​468 <https://github.com/pytest-dev/pytest-xdist/issues/468>
_: Thepy
dependency has been dropped.#​822 <https://github.com/pytest-dev/pytest-xdist/issues/822>
_: Replace internal usage ofpy.log
with a custom solution (but with the same interface).#​823 <https://github.com/pytest-dev/pytest-xdist/issues/823>
_: Remove usage ofpy._pydir
as an rsync candidate.#​824 <https://github.com/pytest-dev/pytest-xdist/issues/824>
_: Replace internal usages ofpy.path.local
bypathlib.Path
.softprops/action-gh-release (softprops/action-gh-release)
[
v2
](https://togithub.com/softprops/action-gh-rConfiguration
📅 Schedule: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.