If I'm reading the docs correctly, it looks like an async library has to depend on sniffio in order to be detected by sniffio: https://sniffio.readthedocs.io/en/latest/#adding-support-to-a-new-async-library
Did you also think about whether it would be possible for a library to advertise itself without having to depend on a third-party library (e.g. using some sort of convention)? That would permit a less "centralized" approach. --Chris On Thu, Aug 16, 2018 at 12:01 AM, Nathaniel Smith <n...@pobox.com> wrote: > Hi all, > > A number of people are working on packages that support multiple async > backends (e.g., asyncio + trio, or trio + curio, or trio + twisted, > ...). So then the question arises... how can I figure out which async > library my user is actually using? > > Answer: install sniffio, and then call > sniffio.current_async_library(), and it tells you. > > Well, right now it only works for trio and asyncio, but if you > maintain an async library and you want to make it easier for packages > to detect you, then it's easy to add support – see the manual. We > considered various clever things, but ultimately decided that the best > approach was to use a ContextVar and make it the coroutine runner's > responsibility to advertise which async flavor it uses. In particular, > this approach works even for hybrid programs that are using multiple > coroutine runners in the same loop, like a Twisted program with > asyncio-flavored and twisted-flavored coroutines in the same thread, > or a Trio program using trio-asyncio to run both asyncio-flavored and > trio-flavored coroutines in the same thread. > > Github: https://github.com/python-trio/sniffio > Manual: https://sniffio.readthedocs.io/ > PyPI: https://pypi.org/p/sniffio > > -n > > -- > Nathaniel J. Smith -- https://vorpus.org > _______________________________________________ > Async-sig mailing list > Async-sig@python.org > https://mail.python.org/mailman/listinfo/async-sig > Code of Conduct: https://www.python.org/psf/codeofconduct/ _______________________________________________ Async-sig mailing list Async-sig@python.org https://mail.python.org/mailman/listinfo/async-sig Code of Conduct: https://www.python.org/psf/codeofconduct/