Strawman:
Generate a top-level module within fastly_compute for each of the interfaces in wit_world.imports. Import the whole contents of the latter in the former, and the former becomes our public API.
If we want to expose the componentize-py-generated stuff directly to the public, we can. If we change our minds in a backward-compatible way, we can replace an item in, say, fastly_compute.acl with a nicer one of the same name, hiding the wit_world one behind it. Even class comparisons using isinstance() should continue to work, since all the customer ever got ahold of as a comparand was the public import path.
The machinery made for #30 can handle the generation fairly easily.
But: how ergonomic is the straight wit_world stuff? Are we going to want to paper over all of it anyway? I have not yet looked it over with that in mind.
Strawman:
Generate a top-level module within
fastly_computefor each of the interfaces inwit_world.imports. Import the whole contents of the latter in the former, and the former becomes our public API.If we want to expose the componentize-py-generated stuff directly to the public, we can. If we change our minds in a backward-compatible way, we can replace an item in, say,
fastly_compute.aclwith a nicer one of the same name, hiding thewit_worldone behind it. Even class comparisons usingisinstance()should continue to work, since all the customer ever got ahold of as a comparand was the public import path.The machinery made for #30 can handle the generation fairly easily.
But: how ergonomic is the straight
wit_worldstuff? Are we going to want to paper over all of it anyway? I have not yet looked it over with that in mind.