Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failures with Python 3.13.0b1 in 4.4.0 #737

Closed
2 tasks done
musicinmybrain opened this issue May 27, 2024 · 4 comments · Fixed by #740
Closed
2 tasks done

Test failures with Python 3.13.0b1 in 4.4.0 #737

musicinmybrain opened this issue May 27, 2024 · 4 comments · Fixed by #740
Labels
bug Something isn't working

Comments

@musicinmybrain
Copy link
Contributor

Things to check first

  • I have searched the existing issues and didn't find my bug already reported there

  • I have checked that my bug is still present in the latest release

AnyIO version

4.4.0

Python version

3.13.0b1

What happened?

______________________________________________________________________________________ TestPath.test_properties[asyncio] _______________________________________________________________________________________
tests/test_fileio.py:103: in test_properties
    assert not missing
E   AssertionError: assert not {'from_uri', 'full_match', 'parser'}
___________________________________________________________________________________ TestPath.test_properties[asyncio+uvloop] ___________________________________________________________________________________
tests/test_fileio.py:103: in test_properties
    assert not missing
E   AssertionError: assert not {'from_uri', 'full_match', 'parser'}
________________________________________________________________________________________ TestPath.test_properties[trio] ________________________________________________________________________________________
tests/test_fileio.py:103: in test_properties
    assert not missing
E   AssertionError: assert not {'from_uri', 'full_match', 'parser'}
__________________________________________________________________________________________ TestPath.test_is_reserved ___________________________________________________________________________________________
tests/test_fileio.py:274: in test_is_reserved
    assert Path("nul").is_reserved() == expected_result
src/anyio/_core/_fileio.py:445: in is_reserved
    return self._path.is_reserved()  
/usr/lib64/python3.13/pathlib/_local.py:423: in is_reserved
    warnings.warn(msg, DeprecationWarning, stacklevel=2)
E   DeprecationWarning: pathlib.PurePath.is_reserved() is deprecated and scheduled for removal in Python 3.15. Use os.path.isreserved() to detect reserved paths on Windows.

I expected these four tests to pass, as they do on Python 3.12.

How can we reproduce the bug?

$ gh repo clone agroholm/anyio
$ cd anyio
$ python3.13 --version
Python 3.13.0b1
$ python3.13 -m venv _e
$ . _e/bin/activate

Before proceeding further, we need to build uvloop ourselves, since the released sdist doesn’t build on Python 3.13 and there are no binary wheels on PyPI for Python 3.13 yet. Furthermore, we need to patch it for Cython 3 as proposed in MagicStack/uvloop#587. This reflects how uvloop is packaged in Fedora.

(_e) $ cd ..
(_e) $ gh repo clone MagicStack/uvloop
(_e) $ cd uvloop
(_e) $ git submodule update --init --recursive
(_e) $ git remote add alan-brooks https://github.com/alan-brooks/uvloop.git
(_e) $ git fetch --all
(_e) $ git branch cython3
(_e) $ git checkout cython3
(_e) $ git merge alan-brooks/cython3_update
(_e) $ sed -r -i 's/(Cython\(>=.*,<)(.*)(\))/\14\3/' pyproject.toml
(_e) $ git add pyproject.toml
(_e) $ git commit -m 'Allow Cython 3'
(_e) $ pip install .

Furthermore, to avoid errors about undefined symbol: _PyErr_WriteUnraisableMsg, we need cffi to contain python-cffi/cffi@49127c6. The easiest way is to manually install 1.17.0rc1.

(_e) $ pip install cffi==1.17.0rc1

Now we can continue:

(_e) $ cd ../anyio
(_e) $ pip install -e .[test]
(_e) $ python -m pytest
=========================================================================================== short test summary info ============================================================================================
SKIPPED [1] tests/test_debugging.py:102: Generator based coroutines have been removed in Python 3.11
SKIPPED [1] tests/test_fileio.py:135: Drive only makes sense on Windows
SKIPPED [1] tests/test_fileio.py:177: Only makes sense on Windows
SKIPPED [3] tests/test_fileio.py:366: os.lchmod() is not available
SKIPPED [1] tests/test_taskgroups.py:964: Generator based coroutines have been removed in Python 3.11
SKIPPED [1] tests/test_taskgroups.py:985: Generator based coroutines have been removed in Python 3.11
XFAIL tests/test_from_thread.py::TestBlockingPortal::test_from_async[trio-trio] - reason: known bug (#525)
XFAIL tests/test_subprocesses.py::test_process_aexit_cancellation_closes_standard_streams[asyncio] - #671 needs to be resolved first
XFAIL tests/test_subprocesses.py::test_process_aexit_cancellation_closes_standard_streams[asyncio+uvloop] - #671 needs to be resolved first
XFAIL tests/test_taskgroups.py::test_fail_after_scope_cancelled_before_timeout[asyncio] - There is currently no way to tell if cancellation happened due to timeout explicitly if the deadline has been exceeded
XFAIL tests/test_taskgroups.py::test_fail_after_scope_cancelled_before_timeout[asyncio+uvloop] - There is currently no way to tell if cancellation happened due to timeout explicitly if the deadline has been exceeded
XFAIL tests/test_taskgroups.py::test_fail_after_scope_cancelled_before_timeout[trio] - There is currently no way to tell if cancellation happened due to timeout explicitly if the deadline has been exceeded
============================================================================ 55 failed, 1379 passed, 8 skipped, 6 xfailed in 36.48s ============================================================================

I’m not as worried about the failures in tests/test_sockets.py due to socket.gaierror: [Errno -2] Name or service not known – we run tests offline in Fedora, so we don’t see these, and these reproduce in Python 3.12 – but failures in tests/test_fileio.py appear to be real regressions in Python 3.13.

@musicinmybrain musicinmybrain added the bug Something isn't working label May 27, 2024
@agronholm
Copy link
Owner

Due to the challenges you mentioned, I haven't taken any serious steps towards Python 3.13 compatibility. That said, the failures don't look serious, as they just indicate that new methods/properties in pathlib.Path are not yet mirrored by anyio.Path.

@musicinmybrain
Copy link
Contributor Author

Thanks. That makes sense. I think it’s reasonable for me to skip test_properties on Python 3.13 until you have a chance to implement from_uri, full_match, and parser.

For TestPath.test_is_reserved, I can offer a PR to expect the DeprecationWarning about pathlib.PurePath.is_reserved() on Python 3.13 and later.

@agronholm
Copy link
Owner

agronholm commented May 27, 2024

Would you mind checking against #740?

@musicinmybrain
Copy link
Contributor Author

I tested #740 in the same virtualenv, and it fixed all of the regressions in tests/test_fileio.py. As far as I could tell, the test results were the same as Python 3.12.

I also tried it as a patch in Fedora, and that built with tests passing in our Python 3.13 test environment.

So that PR looks great to me! Thanks for looking into this.

agronholm added a commit that referenced this issue Jun 16, 2024
mkjpryor pushed a commit to azimuth-cloud/azimuth that referenced this issue Sep 23, 2024
Bumps [anyio](https://github.com/agronholm/anyio) from 4.4.0 to 4.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/anyio/releases">anyio's
releases</a>.</em></p>
<blockquote>
<h2>4.5.0</h2>
<ul>
<li>Improved the performance of <code>anyio.Lock</code> and
<code>anyio.Semaphore</code> on asyncio (even up to 50 %)</li>
<li>Added the <code>fast_acquire</code> parameter to
<code>anyio.Lock</code> and <code>anyio.Semaphore</code> to further
boost performance at the expense of safety (<code>acquire()</code> will
not yield control back if there is no contention)</li>
<li>Added support for the <code>from_uri()</code>,
<code>full_match()</code>, <code>parser</code> methods/properties in
<code>anyio.Path</code>, newly added in Python 3.13 (<a
href="https://redirect.github.com/agronholm/anyio/issues/737">#737</a>)</li>
<li>Added support for more keyword arguments for
<code>run_process()</code> and <code>open_process()</code>:
<code>startupinfo</code>, <code>creationflags</code>,
<code>pass_fds</code>, <code>user</code>, <code>group</code>,
<code>extra_groups</code> and <code>umask</code> (<a
href="https://redirect.github.com/agronholm/anyio/issues/742">#742</a>)</li>
<li>Improved the type annotations and support for <code>PathLike</code>
in <code>run_process()</code> and <code>open_process()</code> to allow
for path-like arguments, just like <code>subprocess.Popen</code></li>
<li>Changed the <code>ResourceWarning</code> from an unclosed memory
object stream to include its address for easier identification</li>
<li>Changed <code>start_blocking_portal()</code> to always use daemonic
threads, to accommodate the &quot;loitering event loop&quot; use
case</li>
<li>Bumped the minimum version of Trio to v0.26.1</li>
<li>Fixed <code>__repr__()</code> of
<code>MemoryObjectItemReceiver</code>, when <code>item</code> is not
defined (<a
href="https://redirect.github.com/agronholm/anyio/pulls/767">#767</a>;
PR by <a
href="https://github.com/Danipulok"><code>@​Danipulok</code></a>)</li>
<li>Fixed <code>to_process.run_sync()</code> failing to initialize if
<code>__main__.__file__</code> pointed to a file in a nonexistent
directory (<a
href="https://redirect.github.com/agronholm/anyio/issues/696">#696</a>)</li>
<li>Fixed <code>AssertionError: feed_data after feed_eof</code> on
asyncio when a subprocess is closed early, before its output has been
read (<a
href="https://redirect.github.com/agronholm/anyio/issues/490">#490</a>)</li>
<li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio
not respecting shielded scopes (<a
href="https://redirect.github.com/agronholm/anyio/issues/771">#771</a>;
PR by <a
href="https://github.com/gschaffner"><code>@​gschaffner</code></a>)</li>
<li>Fixed <code>SocketStream.receive()</code> returning
<code>bytearray</code> instead of <code>bytes</code> when using asyncio
with <code>ProactorEventLoop</code> (Windows) (<a
href="https://redirect.github.com/agronholm/anyio/issues/776">#776</a>)</li>
<li>Fixed quitting the debugger in a pytest test session while in an
active task group failing the test instead of exiting the test session
(because the exit exception arrives in an exception group)</li>
<li>Fixed support for Linux abstract namespaces in UNIX sockets that was
broken in v4.2 (<a
href="https://redirect.github.com/agronholm/anyio/issues/781">#781</a>
&lt;<a
href="https://redirect.github.com/agronholm/anyio/issues/781">agronholm/anyio#781</a>&gt;_;
PR by <a
href="https://github.com/tapetersen"><code>@​tapetersen</code></a>)</li>
<li>Fixed <code>KeyboardInterrupt</code> (ctrl+c) hanging the asyncio
pytest runner</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst">anyio's
changelog</a>.</em></p>
<blockquote>
<h1>Version history</h1>
<p>This library adheres to <code>Semantic Versioning 2.0
&lt;http://semver.org/&gt;</code>_.</p>
<p><strong>4.5.0</strong></p>
<ul>
<li>Improved the performance of <code>anyio.Lock</code> and
<code>anyio.Semaphore</code> on asyncio (even up
to 50 %)</li>
<li>Added the <code>fast_acquire</code> parameter to
<code>anyio.Lock</code> and <code>anyio.Semaphore</code> to
further boost performance at the expense of safety
(<code>acquire()</code> will not yield
control back if there is no contention)</li>
<li>Added support for the <code>from_uri()</code>,
<code>full_match()</code>, <code>parser</code> methods/properties
in <code>anyio.Path</code>, newly added in Python 3.13
(<code>[#737](agronholm/anyio#737)
&lt;https://github.com/agronholm/anyio/issues/737&gt;</code>_)</li>
<li>Added support for more keyword arguments for
<code>run_process()</code> and <code>open_process()</code>:
<code>startupinfo</code>, <code>creationflags</code>,
<code>pass_fds</code>, <code>user</code>, <code>group</code>,
<code>extra_groups</code> and <code>umask</code>
(<code>[#742](agronholm/anyio#742)
&lt;https://github.com/agronholm/anyio/issues/742&gt;</code>_)</li>
<li>Improved the type annotations and support for <code>PathLike</code>
in <code>run_process()</code> and
<code>open_process()</code> to allow for path-like arguments, just like
<code>subprocess.Popen</code></li>
<li>Changed the <code>ResourceWarning</code> from an unclosed memory
object stream to include its
address for easier identification</li>
<li>Changed <code>start_blocking_portal()</code> to always use daemonic
threads, to accommodate the
&quot;loitering event loop&quot; use case</li>
<li>Bumped the minimum version of Trio to v0.26.1</li>
<li>Fixed <code>__repr__()</code> of
<code>MemoryObjectItemReceiver</code>, when <code>item</code> is not
defined
(<code>[#767](agronholm/anyio#767)
&lt;https://github.com/agronholm/anyio/pulls/767&gt;</code>_; PR by <a
href="https://github.com/Danipulok"><code>@​Danipulok</code></a>)</li>
<li>Fixed <code>to_process.run_sync()</code> failing to initialize if
<code>__main__.__file__</code> pointed
to a file in a nonexistent directory
(<code>[#696](agronholm/anyio#696)
&lt;https://github.com/agronholm/anyio/issues/696&gt;</code>_)</li>
<li>Fixed <code>AssertionError: feed_data after feed_eof</code> on
asyncio when a subprocess is
closed early, before its output has been read
(<code>[#490](agronholm/anyio#490)
&lt;https://github.com/agronholm/anyio/issues/490&gt;</code>_)</li>
<li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio
not respecting shielded
scopes (<code>[#771](agronholm/anyio#771)
&lt;https://github.com/agronholm/anyio/issues/771&gt;</code>_; PR by <a
href="https://github.com/gschaffner"><code>@​gschaffner</code></a>)</li>
<li>Fixed <code>SocketStream.receive()</code> returning
<code>bytearray</code> instead of <code>bytes</code> when
using asyncio with <code>ProactorEventLoop</code> (Windows)
(<code>[#776](agronholm/anyio#776)
&lt;https://github.com/agronholm/anyio/issues/776&gt;</code>_)</li>
<li>Fixed quitting the debugger in a pytest test session while in an
active task group
failing the test instead of exiting the test session (because the exit
exception
arrives in an exception group)</li>
<li>Fixed support for Linux abstract namespaces in UNIX sockets that was
broken in v4.2
(<a
href="https://redirect.github.com/agronholm/anyio/issues/781">#781</a>
<a
href="https://redirect.github.com/agronholm/anyio/issues/781">agronholm/anyio#781</a>_;
PR by <a
href="https://github.com/tapetersen"><code>@​tapetersen</code></a>)</li>
<li>Fixed <code>KeyboardInterrupt</code> (ctrl+c) hanging the asyncio
pytest runner</li>
</ul>
<p><strong>4.4.0</strong></p>
<ul>
<li>Added the <code>BlockingPortalProvider</code> class to aid with
constructing synchronous
counterparts to asynchronous interfaces that would otherwise require
multiple blocking</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/agronholm/anyio/commit/7f35ce79e3eb9db2a2731619b48fe289d8dd872f"><code>7f35ce7</code></a>
Bumped up the version</li>
<li><a
href="https://github.com/agronholm/anyio/commit/108cc8300aa5a0d5be2834a8bbd3eb1938b8c104"><code>108cc83</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/anyio/issues/788">#788</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/d1aea98c4f552d04458e49f1484b9c018f2a3ca8"><code>d1aea98</code></a>
Fixed KeyboardInterrupt hanging the asyncio test runner (<a
href="https://redirect.github.com/agronholm/anyio/issues/779">#779</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/c1aff53d8ae5ddc2cf1b8558614a7a2d60c12518"><code>c1aff53</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/anyio/issues/785">#785</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/89d8b4c9609e22306c597cea98ecf3fba45fb663"><code>89d8b4c</code></a>
Use sphinx_rtd_theme also as an extension</li>
<li><a
href="https://github.com/agronholm/anyio/commit/4e9f18dfaa6e7db55231a35fcd93e18c343519a4"><code>4e9f18d</code></a>
Enabled uvloop to be used in the test suite on Python 3.13</li>
<li><a
href="https://github.com/agronholm/anyio/commit/7de644113250a817dd3224e6df9b3658cb09802d"><code>7de6441</code></a>
Pin Sphinx to a compatible version with sphinx-rtd-theme</li>
<li><a
href="https://github.com/agronholm/anyio/commit/41647f4ba7389dc756b0401033af1e3f41ad8a60"><code>41647f4</code></a>
Fixed feed_data after feed_eof assertion errors on asyncio (<a
href="https://redirect.github.com/agronholm/anyio/issues/752">#752</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/38890e607c726be6ea29ea2af445e8df43df5725"><code>38890e6</code></a>
Accept abstract namespace paths for unix domain sockets (<a
href="https://redirect.github.com/agronholm/anyio/issues/782">#782</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/0c8ad519e136c4b136b51333863966a445080a97"><code>0c8ad51</code></a>
Delegated the implementations of Lock and Semaphore to the async backend
clas...</li>
<li>Additional commits viewable in <a
href="https://github.com/agronholm/anyio/compare/4.4.0...4.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyio&package-manager=pip&previous-version=4.4.0&new-version=4.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
mkjpryor pushed a commit to azimuth-cloud/cluster-api-addon-provider that referenced this issue Sep 26, 2024
Bumps [anyio](https://github.com/agronholm/anyio) from 4.4.0 to 4.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/anyio/releases">anyio's
releases</a>.</em></p>
<blockquote>
<h2>4.6.0</h2>
<ul>
<li>Dropped support for Python 3.8 (as <a
href="https://redirect.github.com/agronholm/anyio/issues/698">#698</a>
cannot be resolved without cancel message support)</li>
<li>Fixed 100% CPU use on asyncio while waiting for an exiting task
group to finish while said task group is within a cancelled cancel scope
(<a
href="https://redirect.github.com/agronholm/anyio/issues/695">#695</a>)</li>
<li>Fixed cancel scopes on asyncio not propagating
<code>CancelledError</code> on exit when the enclosing cancel scope has
been effectively cancelled (<a
href="https://redirect.github.com/agronholm/anyio/issues/698">#698</a>)</li>
<li>Fixed asyncio task groups not yielding control to the event loop at
exit if there were no child tasks to wait on</li>
<li>Fixed inconsistent task uncancellation with asyncio cancel scopes
belonging to a task group when said task group has child tasks
running</li>
</ul>
<h2>4.5.0</h2>
<ul>
<li>Improved the performance of <code>anyio.Lock</code> and
<code>anyio.Semaphore</code> on asyncio (even up to 50 %)</li>
<li>Added the <code>fast_acquire</code> parameter to
<code>anyio.Lock</code> and <code>anyio.Semaphore</code> to further
boost performance at the expense of safety (<code>acquire()</code> will
not yield control back if there is no contention)</li>
<li>Added support for the <code>from_uri()</code>,
<code>full_match()</code>, <code>parser</code> methods/properties in
<code>anyio.Path</code>, newly added in Python 3.13 (<a
href="https://redirect.github.com/agronholm/anyio/issues/737">#737</a>)</li>
<li>Added support for more keyword arguments for
<code>run_process()</code> and <code>open_process()</code>:
<code>startupinfo</code>, <code>creationflags</code>,
<code>pass_fds</code>, <code>user</code>, <code>group</code>,
<code>extra_groups</code> and <code>umask</code> (<a
href="https://redirect.github.com/agronholm/anyio/issues/742">#742</a>)</li>
<li>Improved the type annotations and support for <code>PathLike</code>
in <code>run_process()</code> and <code>open_process()</code> to allow
for path-like arguments, just like <code>subprocess.Popen</code></li>
<li>Changed the <code>ResourceWarning</code> from an unclosed memory
object stream to include its address for easier identification</li>
<li>Changed <code>start_blocking_portal()</code> to always use daemonic
threads, to accommodate the &quot;loitering event loop&quot; use
case</li>
<li>Bumped the minimum version of Trio to v0.26.1</li>
<li>Fixed <code>__repr__()</code> of
<code>MemoryObjectItemReceiver</code>, when <code>item</code> is not
defined (<a
href="https://redirect.github.com/agronholm/anyio/pulls/767">#767</a>;
PR by <a
href="https://github.com/Danipulok"><code>@​Danipulok</code></a>)</li>
<li>Fixed <code>to_process.run_sync()</code> failing to initialize if
<code>__main__.__file__</code> pointed to a file in a nonexistent
directory (<a
href="https://redirect.github.com/agronholm/anyio/issues/696">#696</a>)</li>
<li>Fixed <code>AssertionError: feed_data after feed_eof</code> on
asyncio when a subprocess is closed early, before its output has been
read (<a
href="https://redirect.github.com/agronholm/anyio/issues/490">#490</a>)</li>
<li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio
not respecting shielded scopes (<a
href="https://redirect.github.com/agronholm/anyio/issues/771">#771</a>;
PR by <a
href="https://github.com/gschaffner"><code>@​gschaffner</code></a>)</li>
<li>Fixed <code>SocketStream.receive()</code> returning
<code>bytearray</code> instead of <code>bytes</code> when using asyncio
with <code>ProactorEventLoop</code> (Windows) (<a
href="https://redirect.github.com/agronholm/anyio/issues/776">#776</a>)</li>
<li>Fixed quitting the debugger in a pytest test session while in an
active task group failing the test instead of exiting the test session
(because the exit exception arrives in an exception group)</li>
<li>Fixed support for Linux abstract namespaces in UNIX sockets that was
broken in v4.2 (<a
href="https://redirect.github.com/agronholm/anyio/issues/781">#781</a>
&lt;<a
href="https://redirect.github.com/agronholm/anyio/issues/781">agronholm/anyio#781</a>&gt;_;
PR by <a
href="https://github.com/tapetersen"><code>@​tapetersen</code></a>)</li>
<li>Fixed <code>KeyboardInterrupt</code> (ctrl+c) hanging the asyncio
pytest runner</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst">anyio's
changelog</a>.</em></p>
<blockquote>
<h1>Version history</h1>
<p>This library adheres to <code>Semantic Versioning 2.0
&lt;http://semver.org/&gt;</code>_.</p>
<p><strong>4.6.0</strong></p>
<ul>
<li>Dropped support for Python 3.8
(as <code>[#698](agronholm/anyio#698)
&lt;https://github.com/agronholm/anyio/issues/698&gt;</code>_ cannot be
resolved
without cancel message support)</li>
<li>Fixed 100% CPU use on asyncio while waiting for an exiting task
group to finish while
said task group is within a cancelled cancel scope
(<code>[#695](agronholm/anyio#695)
&lt;https://github.com/agronholm/anyio/issues/695&gt;</code>_)</li>
<li>Fixed cancel scopes on asyncio not propagating
<code>CancelledError</code> on exit when the
enclosing cancel scope has been effectively cancelled
(<code>[#698](agronholm/anyio#698)
&lt;https://github.com/agronholm/anyio/issues/698&gt;</code>_)</li>
<li>Fixed asyncio task groups not yielding control to the event loop at
exit if there were
no child tasks to wait on</li>
<li>Fixed inconsistent task uncancellation with asyncio cancel scopes
belonging to a
task group when said task group has child tasks running</li>
</ul>
<p><strong>4.5.0</strong></p>
<ul>
<li>Improved the performance of <code>anyio.Lock</code> and
<code>anyio.Semaphore</code> on asyncio (even up
to 50 %)</li>
<li>Added the <code>fast_acquire</code> parameter to
<code>anyio.Lock</code> and <code>anyio.Semaphore</code> to
further boost performance at the expense of safety
(<code>acquire()</code> will not yield
control back if there is no contention)</li>
<li>Added support for the <code>from_uri()</code>,
<code>full_match()</code>, <code>parser</code> methods/properties
in <code>anyio.Path</code>, newly added in Python 3.13
(<code>[#737](agronholm/anyio#737)
&lt;https://github.com/agronholm/anyio/issues/737&gt;</code>_)</li>
<li>Added support for more keyword arguments for
<code>run_process()</code> and <code>open_process()</code>:
<code>startupinfo</code>, <code>creationflags</code>,
<code>pass_fds</code>, <code>user</code>, <code>group</code>,
<code>extra_groups</code> and <code>umask</code>
(<code>[#742](agronholm/anyio#742)
&lt;https://github.com/agronholm/anyio/issues/742&gt;</code>_)</li>
<li>Improved the type annotations and support for <code>PathLike</code>
in <code>run_process()</code> and
<code>open_process()</code> to allow for path-like arguments, just like
<code>subprocess.Popen</code></li>
<li>Changed the <code>ResourceWarning</code> from an unclosed memory
object stream to include its
address for easier identification</li>
<li>Changed <code>start_blocking_portal()</code> to always use daemonic
threads, to accommodate the
&quot;loitering event loop&quot; use case</li>
<li>Bumped the minimum version of Trio to v0.26.1</li>
<li>Fixed <code>__repr__()</code> of
<code>MemoryObjectItemReceiver</code>, when <code>item</code> is not
defined
(<code>[#767](agronholm/anyio#767)
&lt;https://github.com/agronholm/anyio/pulls/767&gt;</code>_; PR by <a
href="https://github.com/Danipulok"><code>@​Danipulok</code></a>)</li>
<li>Fixed <code>to_process.run_sync()</code> failing to initialize if
<code>__main__.__file__</code> pointed
to a file in a nonexistent directory
(<code>[#696](agronholm/anyio#696)
&lt;https://github.com/agronholm/anyio/issues/696&gt;</code>_)</li>
<li>Fixed <code>AssertionError: feed_data after feed_eof</code> on
asyncio when a subprocess is
closed early, before its output has been read
(<code>[#490](agronholm/anyio#490)
&lt;https://github.com/agronholm/anyio/issues/490&gt;</code>_)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/agronholm/anyio/commit/8cce74917ffc7523203ab44862f20fd61f065cc5"><code>8cce749</code></a>
Bumped up the version</li>
<li><a
href="https://github.com/agronholm/anyio/commit/01a37c603d55605e0d6f21b7d43828f4738c7a3d"><code>01a37c6</code></a>
Fixed TaskGroup and CancelScope exit issues on asyncio (<a
href="https://redirect.github.com/agronholm/anyio/issues/774">#774</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/7f35ce79e3eb9db2a2731619b48fe289d8dd872f"><code>7f35ce7</code></a>
Bumped up the version</li>
<li><a
href="https://github.com/agronholm/anyio/commit/108cc8300aa5a0d5be2834a8bbd3eb1938b8c104"><code>108cc83</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/anyio/issues/788">#788</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/d1aea98c4f552d04458e49f1484b9c018f2a3ca8"><code>d1aea98</code></a>
Fixed KeyboardInterrupt hanging the asyncio test runner (<a
href="https://redirect.github.com/agronholm/anyio/issues/779">#779</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/c1aff53d8ae5ddc2cf1b8558614a7a2d60c12518"><code>c1aff53</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/anyio/issues/785">#785</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/89d8b4c9609e22306c597cea98ecf3fba45fb663"><code>89d8b4c</code></a>
Use sphinx_rtd_theme also as an extension</li>
<li><a
href="https://github.com/agronholm/anyio/commit/4e9f18dfaa6e7db55231a35fcd93e18c343519a4"><code>4e9f18d</code></a>
Enabled uvloop to be used in the test suite on Python 3.13</li>
<li><a
href="https://github.com/agronholm/anyio/commit/7de644113250a817dd3224e6df9b3658cb09802d"><code>7de6441</code></a>
Pin Sphinx to a compatible version with sphinx-rtd-theme</li>
<li><a
href="https://github.com/agronholm/anyio/commit/41647f4ba7389dc756b0401033af1e3f41ad8a60"><code>41647f4</code></a>
Fixed feed_data after feed_eof assertion errors on asyncio (<a
href="https://redirect.github.com/agronholm/anyio/issues/752">#752</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/agronholm/anyio/compare/4.4.0...4.6.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyio&package-manager=pip&previous-version=4.4.0&new-version=4.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants