diff --git a/src/httpcore2/httpcore2/_synchronization.py b/src/httpcore2/httpcore2/_synchronization.py index f13b4920..04f84444 100644 --- a/src/httpcore2/httpcore2/_synchronization.py +++ b/src/httpcore2/httpcore2/_synchronization.py @@ -61,7 +61,7 @@ def setup(self) -> None: if self._backend == "trio": self._trio_lock = trio.Lock() elif self._backend == "asyncio": - self._anyio_lock = anyio.Lock() + self._anyio_lock = anyio.Lock(fast_acquire=True) async def __aenter__(self) -> AsyncLock: if not self._backend: @@ -161,7 +161,7 @@ def setup(self) -> None: if self._backend == "trio": self._trio_semaphore = trio.Semaphore(initial_value=self._bound, max_value=self._bound) elif self._backend == "asyncio": - self._anyio_semaphore = anyio.Semaphore(initial_value=self._bound, max_value=self._bound) + self._anyio_semaphore = anyio.Semaphore(initial_value=self._bound, max_value=self._bound, fast_acquire=True) async def acquire(self) -> None: if not self._backend: diff --git a/src/httpcore2/pyproject.toml b/src/httpcore2/pyproject.toml index dcc25f2f..83609c52 100644 --- a/src/httpcore2/pyproject.toml +++ b/src/httpcore2/pyproject.toml @@ -47,7 +47,7 @@ dependencies = ["certifi", "h11>=0.16"] http2 = ["h2>=3,<5"] socks = ["socksio==1.*"] trio = ["trio>=0.22.0,<1.0"] -asyncio = ["anyio>=4.0,<5.0"] +asyncio = ["anyio>=4.5.0,<5.0"] [project.urls] Documentation = "https://www.encode.io/httpcore" diff --git a/uv.lock b/uv.lock index f070a877..37ee2fe6 100644 --- a/uv.lock +++ b/uv.lock @@ -1337,7 +1337,7 @@ trio = [ [package.metadata] requires-dist = [ - { name = "anyio", marker = "extra == 'asyncio'", specifier = ">=4.0,<5.0" }, + { name = "anyio", marker = "extra == 'asyncio'", specifier = ">=4.5.0,<5.0" }, { name = "certifi" }, { name = "h11", specifier = ">=0.16" }, { name = "h2", marker = "extra == 'http2'", specifier = ">=3,<5" },