You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ pip install flake8-async
23
23
```
24
24
25
25
## List of warnings
26
-
-**ASYNC100**: A `with [trio|anyio].fail_after(...):` or `with [trio|anyio].move_on_after(...):`
26
+
-**ASYNC100**: A `with [trio/anyio].fail_after(...):` or `with [trio/anyio].move_on_after(...):`
27
27
context does not contain any `await` statements. This makes it pointless, as
28
28
the timeout can only be triggered by a checkpoint.
29
29
-**ASYNC101**: `yield` inside a trio/anyio nursery or cancel scope is only safe when implementing a context manager - otherwise, it breaks exception handling.
@@ -33,13 +33,13 @@ pip install flake8-async
33
33
-**ASYNC105**: Calling a trio async function without immediately `await`ing it. This is only supported with trio functions, but you can get similar functionality with a type-checker.
34
34
-**ASYNC106**: `trio`/`anyio`/`asyncio` must be imported with `import trio`/`import anyio`/`import asyncio` for the linter to work.
35
35
-**ASYNC109**: Async function definition with a `timeout` parameter - use `[trio/anyio].[fail/move_on]_[after/at]` instead.
36
-
-**ASYNC110**: `while <condition>: await [trio/anyio].sleep()` should be replaced by a `[trio|anyio].Event`.
36
+
-**ASYNC110**: `while <condition>: await [trio/anyio].sleep()` should be replaced by a `[trio/anyio].Event`.
37
37
-**ASYNC111**: Variable, from context manager opened inside nursery, passed to `start[_soon]` might be invalidly accessed while in use, due to context manager closing before the nursery. This is usually a bug, and nurseries should generally be the inner-most context manager.
38
38
-**ASYNC112**: Nursery body with only a call to `nursery.start[_soon]` and not passing itself as a parameter can be replaced with a regular function call.
39
39
-**ASYNC113**: Using `nursery.start_soon` in `__aenter__` doesn't wait for the task to begin. Consider replacing with `nursery.start`.
40
40
-**ASYNC114**: Startable function (i.e. has a `task_status` keyword parameter) not in `--startable-in-context-manager` parameter list, please add it so ASYNC113 can catch errors when using it.
41
-
-**ASYNC115**: Replace `[trio|anyio].sleep(0)` with the more suggestive `[trio|anyio].lowlevel.checkpoint()`.
42
-
-**ASYNC116**: `[trio|anyio].sleep()` with >24 hour interval should usually be `[trio|anyio].sleep_forever()`.
41
+
-**ASYNC115**: Replace `[trio/anyio].sleep(0)` with the more suggestive `[trio/anyio].lowlevel.checkpoint()`.
42
+
-**ASYNC116**: `[trio/anyio].sleep()` with >24 hour interval should usually be `[trio/anyio].sleep_forever()`.
43
43
-**ASYNC118**: Don't assign the value of `anyio.get_cancelled_exc_class()` to a variable, since that breaks linter checks and multi-backend programs.
44
44
45
45
### Warnings for blocking sync calls in async functions
@@ -48,13 +48,13 @@ Note: 22X, 23X and 24X has not had asyncio-specific suggestions written.
48
48
-**ASYNC210**: Sync HTTP call in async function, use `httpx.AsyncClient`. This and the other ASYNC21x checks look for usage of `urllib3` and `httpx.Client`, and recommend using `httpx.AsyncClient` as that's the largest http client supporting anyio/trio.
49
49
-**ASYNC211**: Likely sync HTTP call in async function, use `httpx.AsyncClient`. Looks for `urllib3` method calls on pool objects, but only matching on the method signature and not the object.
50
50
-**ASYNC212**: Blocking sync HTTP call on httpx object, use httpx.AsyncClient.
51
-
-**ASYNC220**: Sync process call in async function, use `await nursery.start([trio|anyio].run_process, ...)`.
52
-
-**ASYNC221**: Sync process call in async function, use `await [trio|anyio].run_process(...)`.
53
-
-**ASYNC222**: Sync `os.*` call in async function, wrap in `await [trio|anyio].to_thread.run_sync()`.
54
-
-**ASYNC230**: Sync IO call in async function, use `[trio|anyio].open_file(...)`.
55
-
-**ASYNC231**: Sync IO call in async function, use `[trio|anyio].wrap_file(...)`.
56
-
-**ASYNC232**: Blocking sync call on file object, wrap the file object in `[trio|anyio].wrap_file()` to get an async file object.
57
-
-**ASYNC240**: Avoid using `os.path` in async functions, prefer using `[trio|anyio].Path` objects.
51
+
-**ASYNC220**: Sync process call in async function, use `await nursery.start([trio/anyio].run_process, ...)`.
52
+
-**ASYNC221**: Sync process call in async function, use `await [trio/anyio].run_process(...)`.
53
+
-**ASYNC222**: Sync `os.*` call in async function, wrap in `await [trio/anyio].to_thread.run_sync()`.
54
+
-**ASYNC230**: Sync IO call in async function, use `[trio/anyio].open_file(...)`.
55
+
-**ASYNC231**: Sync IO call in async function, use `[trio/anyio].wrap_file(...)`.
56
+
-**ASYNC232**: Blocking sync call on file object, wrap the file object in `[trio/anyio].wrap_file()` to get an async file object.
57
+
-**ASYNC240**: Avoid using `os.path` in async functions, prefer using `[trio/anyio].Path` objects.
58
58
59
59
### Warnings disabled by default
60
60
-**ASYNC900**: Async generator without `@asynccontextmanager` not allowed. You might want to enable this on a codebase since async generators are inherently unsafe and cleanup logic might not be performed. See https://github.com/python-trio/flake8-async/issues/211 and https://discuss.python.org/t/using-exceptiongroup-at-anthropic-experience-report/20888/6 for discussion.
@@ -134,7 +134,7 @@ Comma-separated list of error-codes to enable autofixing for if implemented. Req
134
134
Whether to also print an error message for autofixed errors.
135
135
136
136
### `--anyio`
137
-
Change the default library to be anyio instead of trio. If trio is imported it will assume both are available and print suggestions with [anyio|trio].
137
+
Change the default library to be anyio instead of trio. If trio is imported it will assume both are available and print suggestions with [anyio/trio].
138
138
139
139
### `no-checkpoint-warning-decorators`
140
140
Comma-separated list of decorators to disable checkpointing checks for, turning off ASYNC910 and ASYNC911 warnings for functions decorated with any decorator matching any in the list. Matching is done with [fnmatch](https://docs.python.org/3/library/fnmatch.html). Defaults to disabling for `asynccontextmanager`.
0 commit comments