npub1pg3pgv870s039ugw273sy4rht0t8h55damzyg958n8pn4qp3tvcq4r9a8a (npub1pg3…9a8a) The "why" is to let people to choose what dependencies they want (e.g. choose an async framework that you prefer). Also when a dependency is an optional speed-up or feature boost (e.g. plug-ins for something using pluggy).
The "how" is either `try` statements around `import` statements or things like httpx or anyio which abstract out the details or pluggy to find things that were installed.