-
Notifications
You must be signed in to change notification settings - Fork 141
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
Event.set() with an EventAdapter
does not work unless already running in an async event loop
#819
Comments
Well, you're not running any async event loop here, so it doesn't know how to perform the notification, that's all. In an earlier version you wouldn't have gotten even that far, as already the creation of an |
On asyncio or trio, their own implementations know to use an asyncio or trio event loop, respectively, but with AnyIO, which event loop should it even try here? If this is a pressing use case, the current event proxy class could be extended to allow the |
At least in my case, I'm trying to create an object `awaiter =
WaitForCallback()` for which the user can then get a value synchronously
with "awaiter.get_sync()" or asynchronously with `await
awaiter.get_async()`.
The code is a lot simpler when the callback can just do
`callback_happened.set()` and not care whether it's really in an event loop
or not. In the non-event-loop case, `callback_happened` is an expensive
boolean, and in the yes-event-loop case I can `await
callback_happend.wait()`
I certainly realize this isn't a high-priority bug. I can work around it.
But it is an incompatibility.
…On Tue, Nov 5, 2024 at 11:36 AM Alex Grönholm ***@***.***> wrote:
Well, you're not running any async event loop here, so it doesn't know how
to perform the notification, that's all. In an earlier version you wouldn't
have gotten even that far, as already the creation of an Event would have
failed for the same reason.
—
Reply to this email directly, view it on GitHub
<#819 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABC2LIPPPKAX6W7EMPFLDZDZ7EM25AVCNFSM6AAAAABRHI2K6SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINJYGAYDKOJTGM>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Do you mean you have a callback that sets an event from a thread that is not running an event loop? |
This is all part of a library that's supposed to work whether or not there
is an event loop. Many user-callable methods have both a _sync and an
_async version depending on whether they want to use the library without or
with an event loop.
The callback does not know whether it is running from a thread with an
event loop or not. When I was agnostic about no-event-loop vs asyncio,
everything worked. When I increased my agnosticism to include trio (and
switched to anyio), that's when I got an error.
Again. This isn't urgent. I can work around it. But at least I wanted to
explain the use case.
…On Tue, Nov 5, 2024 at 12:02 PM Alex Grönholm ***@***.***> wrote:
Do you mean you have a callback that sets an event from a thread that is
not running an event loop?
—
Reply to this email directly, view it on GitHub
<#819 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABC2LIIVCU23DMHCNXVTERDZ7EP6DAVCNFSM6AAAAABRHI2K6SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINJYGA2DSOJWHE>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
If the event is supposed to notify code running in an event loop thread, then setting the event from just any thread is a big no-no! These events (or asyncio or trio events for that matter) are NOT thread safe! It's imperative to call one of the thread-safe entry mechanisms in order to correctly notify waiters in an async event loop. |
EventAdapter
does not work unless already running in an async event loop
Bumps [anyio](https://github.com/agronholm/anyio) from 4.6.2.post1 to 4.7.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.7.0</h2> <ul> <li>Updated <code>TaskGroup</code> to work with asyncio's eager task factories (<a href="https://redirect.github.com/agronholm/anyio/issues/764">#764</a>)</li> <li>Added the <code>wait_readable()</code> and <code>wait_writable()</code> functions which will accept an object with a <code>.fileno()</code> method or an integer handle, and deprecated their now obsolete versions (<code>wait_socket_readable()</code> and <code>wait_socket_writable()</code>) (PR by <a href="https://github.com/davidbrochart"><code>@davidbrochart</code></a>)</li> <li>Changed <code>EventAdapter</code> (an <code>Event</code> with no bound async backend) to allow <code>set()</code> to work even before an async backend is bound to it (<a href="https://redirect.github.com/agronholm/anyio/issues/819">#819</a>)</li> <li>Added support for <code>wait_readable()</code> and <code>wait_writable()</code> on <code>ProactorEventLoop</code> (used on asyncio + Windows by default)</li> <li>Fixed a misleading <code>ValueError</code> in the context of DNS failures (<a href="https://redirect.github.com/agronholm/anyio/issues/815">#815</a>; PR by <a href="https://github.com/graingert"><code>@graingert</code></a>)</li> <li>Fixed the return type annotations of <code>readinto()</code> and <code>readinto1()</code> methods in the <code>anyio.AsyncFile</code> class (<a href="https://redirect.github.com/agronholm/anyio/issues/825">#825</a>)</li> <li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio returning false positives in cleanup code on Python >= 3.11 (<a href="https://redirect.github.com/agronholm/anyio/issues/832">#832</a>; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</li> <li>Fixed cancelled cancel scopes on asyncio calling <code>asyncio.Task.uncancel</code> when propagating a <code>CancelledError</code> on exit to a cancelled parent scope (<a href="https://redirect.github.com/agronholm/anyio/pull/790">#790</a>; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</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 <http://semver.org/></code>_.</p> <p><strong>4.7.0</strong></p> <ul> <li>Updated <code>TaskGroup</code> to work with asyncio's eager task factories (<code>[#764](agronholm/anyio#764) <https://github.com/agronholm/anyio/issues/764></code>_)</li> <li>Added the <code>wait_readable()</code> and <code>wait_writable()</code> functions which will accept an object with a <code>.fileno()</code> method or an integer handle, and deprecated their now obsolete versions (<code>wait_socket_readable()</code> and <code>wait_socket_writable()</code>) (PR by <a href="https://github.com/davidbrochart"><code>@davidbrochart</code></a>)</li> <li>Changed <code>EventAdapter</code> (an <code>Event</code> with no bound async backend) to allow <code>set()</code> to work even before an async backend is bound to it (<code>[#819](agronholm/anyio#819) <https://github.com/agronholm/anyio/issues/819></code>_)</li> <li>Added support for <code>wait_readable()</code> and <code>wait_writable()</code> on <code>ProactorEventLoop</code> (used on asyncio + Windows by default)</li> <li>Fixed a misleading <code>ValueError</code> in the context of DNS failures (<code>[#815](agronholm/anyio#815) <https://github.com/agronholm/anyio/issues/815></code>_; PR by <a href="https://github.com/graingert"><code>@graingert</code></a>)</li> <li>Fixed the return type annotations of <code>readinto()</code> and <code>readinto1()</code> methods in the <code>anyio.AsyncFile</code> class (<code>[#825](agronholm/anyio#825) <https://github.com/agronholm/anyio/issues/825></code>_)</li> <li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio returning false positives in cleanup code on Python >= 3.11 (<code>[#832](agronholm/anyio#832) <https://github.com/agronholm/anyio/issues/832></code>_; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</li> <li>Fixed cancelled cancel scopes on asyncio calling <code>asyncio.Task.uncancel</code> when propagating a <code>CancelledError</code> on exit to a cancelled parent scope (<code>[#790](agronholm/anyio#790) <https://github.com/agronholm/anyio/pull/790></code>_; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</li> </ul> <p><strong>4.6.2</strong></p> <ul> <li>Fixed regression caused by (<code>[#807](agronholm/anyio#807) <https://github.com/agronholm/anyio/pull/807></code>_) that prevented the use of parametrized async fixtures</li> </ul> <p><strong>4.6.1</strong></p> <p>This release contains all the changes from both v4.5.1 and v4.6.0, plus:</p> <ul> <li>Fixed TaskGroup and CancelScope producing cyclic references in tracebacks when raising exceptions (<code>[#806](agronholm/anyio#806) <https://github.com/agronholm/anyio/pull/806></code>_) (PR by <a href="https://github.com/graingert"><code>@graingert</code></a>)</li> </ul> <p><strong>4.6.0</strong></p> <p>This release is the successor to v4.5.0 with Python 3.8 support dropped, and does not contain the changes from v4.5.1.</p> <ul> <li>Dropped support for Python 3.8 (as <code>[#698](agronholm/anyio#698) <https://github.com/agronholm/anyio/issues/698></code>_ cannot be resolved</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agronholm/anyio/commit/c967f5c644b4e535af4cb230d9bcb8be06e2559f"><code>c967f5c</code></a> Bumped up the version</li> <li><a href="https://github.com/agronholm/anyio/commit/f47ac5eb32b695ba76b94f811c4fa0e2d040c311"><code>f47ac5e</code></a> Rearranged changelog entries</li> <li><a href="https://github.com/agronholm/anyio/commit/f316ce5cefb3fa4ebb87518fa58ea205230ba24e"><code>f316ce5</code></a> Allowed Event to be set before it's bound to an async backend (<a href="https://redirect.github.com/agronholm/anyio/issues/835">#835</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/93a57466c3b226ef2bc6fb2f0d361ed9ce8f707c"><code>93a5746</code></a> Fixed <code>asyncio.Task.cancelling</code> issues (<a href="https://redirect.github.com/agronholm/anyio/issues/790">#790</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/39cf394713f06f1d008a18b489ad042252ddb469"><code>39cf394</code></a> Avoid exposing extra variables key and value in anyio.abc (<a href="https://redirect.github.com/agronholm/anyio/issues/833">#833</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/a2150f525ea96fa6c14f9a1adca5ee36b9b61992"><code>a2150f5</code></a> Fixed design issues in PR template (<a href="https://redirect.github.com/agronholm/anyio/issues/834">#834</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/0f8061148b3c038c2211a2e37c63f7ce94c0a2a4"><code>0f80611</code></a> Added support for wait_readable() and wait_writable() on ProactorEventLoop (#...</li> <li><a href="https://github.com/agronholm/anyio/commit/97d5fe6f92608807f4e1a2feed8be80d280250a8"><code>97d5fe6</code></a> Made asyncio TaskGroup work with eager task factories (<a href="https://redirect.github.com/agronholm/anyio/issues/822">#822</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/44405f4a6c33cea9c0e0e4cf169248fd800e6ffe"><code>44405f4</code></a> Updated downstream test workflows and their target Python versions</li> <li><a href="https://github.com/agronholm/anyio/commit/93c0cd61b5c3b296fa4115957eab8f76a9cf23a1"><code>93c0cd6</code></a> Replaced mentions to run_sync_in_process with to_process.run_sync (<a href="https://redirect.github.com/agronholm/anyio/issues/829">#829</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agronholm/anyio/compare/4.6.2.post1...4.7.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.6.2.post1&new-version=4.7.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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [anyio](https://github.com/agronholm/anyio) from 4.6.2.post1 to 4.7.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.7.0</h2> <ul> <li>Updated <code>TaskGroup</code> to work with asyncio's eager task factories (<a href="https://redirect.github.com/agronholm/anyio/issues/764">#764</a>)</li> <li>Added the <code>wait_readable()</code> and <code>wait_writable()</code> functions which will accept an object with a <code>.fileno()</code> method or an integer handle, and deprecated their now obsolete versions (<code>wait_socket_readable()</code> and <code>wait_socket_writable()</code>) (PR by <a href="https://github.com/davidbrochart"><code>@davidbrochart</code></a>)</li> <li>Changed <code>EventAdapter</code> (an <code>Event</code> with no bound async backend) to allow <code>set()</code> to work even before an async backend is bound to it (<a href="https://redirect.github.com/agronholm/anyio/issues/819">#819</a>)</li> <li>Added support for <code>wait_readable()</code> and <code>wait_writable()</code> on <code>ProactorEventLoop</code> (used on asyncio + Windows by default)</li> <li>Fixed a misleading <code>ValueError</code> in the context of DNS failures (<a href="https://redirect.github.com/agronholm/anyio/issues/815">#815</a>; PR by <a href="https://github.com/graingert"><code>@graingert</code></a>)</li> <li>Fixed the return type annotations of <code>readinto()</code> and <code>readinto1()</code> methods in the <code>anyio.AsyncFile</code> class (<a href="https://redirect.github.com/agronholm/anyio/issues/825">#825</a>)</li> <li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio returning false positives in cleanup code on Python >= 3.11 (<a href="https://redirect.github.com/agronholm/anyio/issues/832">#832</a>; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</li> <li>Fixed cancelled cancel scopes on asyncio calling <code>asyncio.Task.uncancel</code> when propagating a <code>CancelledError</code> on exit to a cancelled parent scope (<a href="https://redirect.github.com/agronholm/anyio/pull/790">#790</a>; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</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 <http://semver.org/></code>_.</p> <p><strong>4.7.0</strong></p> <ul> <li>Updated <code>TaskGroup</code> to work with asyncio's eager task factories (<code>[#764](agronholm/anyio#764) <https://github.com/agronholm/anyio/issues/764></code>_)</li> <li>Added the <code>wait_readable()</code> and <code>wait_writable()</code> functions which will accept an object with a <code>.fileno()</code> method or an integer handle, and deprecated their now obsolete versions (<code>wait_socket_readable()</code> and <code>wait_socket_writable()</code>) (PR by <a href="https://github.com/davidbrochart"><code>@davidbrochart</code></a>)</li> <li>Changed <code>EventAdapter</code> (an <code>Event</code> with no bound async backend) to allow <code>set()</code> to work even before an async backend is bound to it (<code>[#819](agronholm/anyio#819) <https://github.com/agronholm/anyio/issues/819></code>_)</li> <li>Added support for <code>wait_readable()</code> and <code>wait_writable()</code> on <code>ProactorEventLoop</code> (used on asyncio + Windows by default)</li> <li>Fixed a misleading <code>ValueError</code> in the context of DNS failures (<code>[#815](agronholm/anyio#815) <https://github.com/agronholm/anyio/issues/815></code>_; PR by <a href="https://github.com/graingert"><code>@graingert</code></a>)</li> <li>Fixed the return type annotations of <code>readinto()</code> and <code>readinto1()</code> methods in the <code>anyio.AsyncFile</code> class (<code>[#825](agronholm/anyio#825) <https://github.com/agronholm/anyio/issues/825></code>_)</li> <li>Fixed <code>TaskInfo.has_pending_cancellation()</code> on asyncio returning false positives in cleanup code on Python >= 3.11 (<code>[#832](agronholm/anyio#832) <https://github.com/agronholm/anyio/issues/832></code>_; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</li> <li>Fixed cancelled cancel scopes on asyncio calling <code>asyncio.Task.uncancel</code> when propagating a <code>CancelledError</code> on exit to a cancelled parent scope (<code>[#790](agronholm/anyio#790) <https://github.com/agronholm/anyio/pull/790></code>_; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</li> </ul> <p><strong>4.6.2</strong></p> <ul> <li>Fixed regression caused by (<code>[#807](agronholm/anyio#807) <https://github.com/agronholm/anyio/pull/807></code>_) that prevented the use of parametrized async fixtures</li> </ul> <p><strong>4.6.1</strong></p> <p>This release contains all the changes from both v4.5.1 and v4.6.0, plus:</p> <ul> <li>Fixed TaskGroup and CancelScope producing cyclic references in tracebacks when raising exceptions (<code>[#806](agronholm/anyio#806) <https://github.com/agronholm/anyio/pull/806></code>_) (PR by <a href="https://github.com/graingert"><code>@graingert</code></a>)</li> </ul> <p><strong>4.6.0</strong></p> <p>This release is the successor to v4.5.0 with Python 3.8 support dropped, and does not contain the changes from v4.5.1.</p> <ul> <li>Dropped support for Python 3.8 (as <code>[#698](agronholm/anyio#698) <https://github.com/agronholm/anyio/issues/698></code>_ cannot be resolved</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agronholm/anyio/commit/c967f5c644b4e535af4cb230d9bcb8be06e2559f"><code>c967f5c</code></a> Bumped up the version</li> <li><a href="https://github.com/agronholm/anyio/commit/f47ac5eb32b695ba76b94f811c4fa0e2d040c311"><code>f47ac5e</code></a> Rearranged changelog entries</li> <li><a href="https://github.com/agronholm/anyio/commit/f316ce5cefb3fa4ebb87518fa58ea205230ba24e"><code>f316ce5</code></a> Allowed Event to be set before it's bound to an async backend (<a href="https://redirect.github.com/agronholm/anyio/issues/835">#835</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/93a57466c3b226ef2bc6fb2f0d361ed9ce8f707c"><code>93a5746</code></a> Fixed <code>asyncio.Task.cancelling</code> issues (<a href="https://redirect.github.com/agronholm/anyio/issues/790">#790</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/39cf394713f06f1d008a18b489ad042252ddb469"><code>39cf394</code></a> Avoid exposing extra variables key and value in anyio.abc (<a href="https://redirect.github.com/agronholm/anyio/issues/833">#833</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/a2150f525ea96fa6c14f9a1adca5ee36b9b61992"><code>a2150f5</code></a> Fixed design issues in PR template (<a href="https://redirect.github.com/agronholm/anyio/issues/834">#834</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/0f8061148b3c038c2211a2e37c63f7ce94c0a2a4"><code>0f80611</code></a> Added support for wait_readable() and wait_writable() on ProactorEventLoop (#...</li> <li><a href="https://github.com/agronholm/anyio/commit/97d5fe6f92608807f4e1a2feed8be80d280250a8"><code>97d5fe6</code></a> Made asyncio TaskGroup work with eager task factories (<a href="https://redirect.github.com/agronholm/anyio/issues/822">#822</a>)</li> <li><a href="https://github.com/agronholm/anyio/commit/44405f4a6c33cea9c0e0e4cf169248fd800e6ffe"><code>44405f4</code></a> Updated downstream test workflows and their target Python versions</li> <li><a href="https://github.com/agronholm/anyio/commit/93c0cd61b5c3b296fa4115957eab8f76a9cf23a1"><code>93c0cd6</code></a> Replaced mentions to run_sync_in_process with to_process.run_sync (<a href="https://redirect.github.com/agronholm/anyio/issues/829">#829</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agronholm/anyio/compare/4.6.2.post1...4.7.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.6.2.post1&new-version=4.7.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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.6.2
Python version
3.12
What happened?
Unexpected exception. Code that runs fine with trio and asyncio fails with anyio.
How can we reproduce the bug?
In a newly started Python:
This code works fine if we replace
anyio
withtrio
orasyncio
. Onanyio
I get the error messageAsyncLibraryNotFound
.It seems strange that
anyio
has no problem creating theEvent
, but fails in setting it.The text was updated successfully, but these errors were encountered: