Results 955 comments of Thomas Grainger

@toidi step 1 would be to find any imports/calls to asyncio and replace it with the anyio equivalent

> that tries to solve asyncio event loop plugging, which actually is already designed to be globally replaceable I'm looking to replace the coroutine framework not the event loop

Well it's mainly about the pluggable coroutine framework, as I'd like to be able to use aiobotocore on curio and trio applications. For this to happen asyncio and aiohttp both...

the changes to aiobotocore for anyio will be quite minimal: ``` aiobotocore/_endpoint_helpers.py: asyncio.TimeoutError, aiobotocore/credentials.py: self._refresh_lock = asyncio.Lock() aiobotocore/credentials.py: self._refresh_lock = asyncio.Lock() aiobotocore/credentials.py: def __init__(self, *args, popen=asyncio.create_subprocess_exec, **kwargs): aiobotocore/endpoint.py: # NOTE:...

the TimeoutErrors would have to be handled a bit more carefully as modern coroutine frameworks discourage "libraries from using internal timeouts. Instead, it encourages the caller to enforce timeouts, which...

@toidi httpx uses its own abstraction https://github.com/encode/httpcore/blob/master/httpcore/_backends/anyio.py which is for opening sockets, creating locks and sleeping. aiobotocore also needs subprocess support

@emcpow2 httpx and encode in general have fully bought into anyio now: https://github.com/encode/httpcore/blob/f0d16e9462910c13d3b72039223346a3fe8a3299/CHANGELOG.md#fixed-2

> This is still failing frequently: > > #6696 seems relevant? cc @graingert 6696 won't fix this issue, it will only make it worse as my PR is using a...

I think the only fix is to change the format of the profiler.merge return value so it's a flat object with internal references

one option is to backport `asyncio.Lock` and `asyncio.Event` from 3.10 similar to `distributed.actor._LateLoopEvent` the other option is to use cached_property: ```python class ProcessInterface: def __init__(self, scheduler=None, name=None): self.address = getattr(self,...