Skip to content
13 changes: 7 additions & 6 deletions asyncer/_compat.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
# AnyIO 4.1.0 renamed cancellable to abandon_on_cancel
import importlib
import importlib.metadata
import inspect
from typing import Callable, TypeVar, Union

import anyio
import anyio.to_thread
from anyio import CapacityLimiter
from typing_extensions import TypeVarTuple, Unpack

ANYIO_VERSION = importlib.metadata.version("anyio")

T_Retval = TypeVar("T_Retval")
PosArgsT = TypeVarTuple("PosArgsT")

if ANYIO_VERSION >= "4.1.0":
# Use abandon_on_cancel if available
RUN_SYNC_AOC = (
"abandon_on_cancel" in inspect.getfullargspec(anyio.to_thread.run_sync).kwonlyargs
)

if RUN_SYNC_AOC:

async def run_sync(
func: Callable[[Unpack[PosArgsT]], T_Retval],
Expand Down