Skip to content

ASYNC115: autofix to use full qualified anyio.lowlevel import#24166

Merged
MichaReiser merged 4 commits intoastral-sh:mainfrom
Sim-hu:fix/async115-anyio-import
Mar 25, 2026
Merged

ASYNC115: autofix to use full qualified anyio.lowlevel import#24166
MichaReiser merged 4 commits intoastral-sh:mainfrom
Sim-hu:fix/async115-anyio-import

Conversation

@Sim-hu
Copy link
Contributor

@Sim-hu Sim-hu commented Mar 25, 2026

Summary

The ASYNC115 autofix for anyio.sleep(0) was generating from anyio import lowlevel, but anyio.lowlevel is a submodule that requires import anyio.lowlevel. The fixed code would fail at runtime with AttributeError.

This change makes the import strategy module-aware:

  • anyio: Uses import anyio.lowlevel (submodule import)
  • trio: Keeps from trio import lowlevel (re-exported member, works fine)

Added a test case covering the anyio-specific import path.

Fixes #21693

…ort lowlevel`

The autofix for `anyio.sleep(0)` was generating `from anyio import lowlevel`,
but `anyio.lowlevel` is a submodule that requires `import anyio.lowlevel`.

Fixes astral-sh#21693
@astral-sh-bot astral-sh-bot bot requested a review from ntBre March 25, 2026 05:56
@MichaReiser MichaReiser changed the title Fix ASYNC115 autofix to use correct anyio.lowlevel import ASYNC115: autofix to use full qualified anyio.lowlevel import Mar 25, 2026
@MichaReiser MichaReiser enabled auto-merge (squash) March 25, 2026 08:28
@MichaReiser MichaReiser merged commit adaf909 into astral-sh:main Mar 25, 2026
41 checks passed
@ntBre ntBre added bug Something isn't working fixes Related to suggested fixes for violations labels Mar 25, 2026
carljm added a commit that referenced this pull request Mar 25, 2026
* main:
  [ty] make `test-case` a dev-dependency (#24187)
  [ty] implement cycle normalization for more types to prevent too-many-cycle panics (#24061)
  [ty] Silence all diagnostics in unreachable code (#24179)
  [ty] Intern `InferableTypeVars` (#24161)
  Implement unnecessary-if (RUF050) (#24114)
  Recognize `Self` annotation and `self` assignment in SLF001 (#24144)
  Bump the npm version before publish (#24178)
  [ty] Disallow Self in metaclass and static methods (#23231)
  Use trusted publishing for NPM packages (#24171)
  [ty] Respect non-explicitly defined dataclass params (#24170)
  Add RUF072: warn when using  operator on an f-string (#24162)
  [ty] Check return type of generator functions (#24026)
  Implement useless-finally (RUF-072) (#24165)
  [ty] Add test for a dataclass with a default field converter (#24169)
  [ty] Dataclass field converters (#23088)
  [flake8-bandit] Treat sys.executable as trusted input in S603 (#24106)
  [ty] Add support for `typing.Concatenate` (#23689)
  `ASYNC115`: autofix to use full qualified `anyio.lowlevel` import (#24166)
  [ty] Disallow read-only fields in TypedDict updates (#24128)
  Speed up diagnostic rendering (#24146)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working fixes Related to suggested fixes for violations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ASYNC115 (async-zero-sleep): anyio.lowlevel.checkpoint() needs import anyio.lowlevel

3 participants