There's currently 2 functions to determine file format, coordinates.core.guess_format and topology.core.guess_format. The coordinates version can handle compressed extensions and work around them, the topology one can't.
The topology version needs this compressed format handling. This is probably best done by moving a few things out of coordinates.core into lib.util, so that both modules then use the same handling. (And avoiding imports to topology from coordinates and vice versa)