For another example use case, this just came up as a feature request in Splink. I appreciate everyone’s effort.
I’m not sure this has been mentioned yet, but I think a solution would need to be able to hide transitive internal dependencies. By that I mean: say you wanted to expose two extras named csv and parquet. Each of these share some dependencies, so it would be nice to make an iobase extra that includes anyio, gdrive, s3, fsspec, etc. But this IO base extra is internal and we don’t want an end user to be able to install my package[iobase].
The rust/cargo docs may be inspiring to people. They advocate for making composition always additive.