-
Notifications
You must be signed in to change notification settings - Fork 8
Description
It has become clear that we need to decouple the STAPI models from the stapi-fastapi implementation. Use of the models for things such as clients should not require pulling in all of the API implementation dependencies. We should follow a model similar to pystac and its split with pystac-client. Where those could be packaged together, pystac users don't have to pull in the pystac-client dependencies if they do not require them. We can do the same here.
We also know we will need a client implementation. That will eventually give us three packages:
- Models
- FastAPI implementation
- Client implementation
I would propose the following names for those packages:
- pystapi
- pystapi-fastapi
- pystapi-client
Using _py_stapi is more consistent with the _py_stac naming convention. We will need to move the existing stapi-fastapi package to this new name.
I would propose each of these packages is implemented using namespace packaging within the pystapi namespace.
Given the significant coupling between pystapi models and the pystapi-fastapi implementation, I would advise we keep the source for both packages within the same monorepo. I would expect the coupling between the models and the client would be similar, so we would likely end up with the source for all three in the same repo. Doing so makes it easier to coordinate breaking changes across the different package codebases in a clear way, and would allow us to keep versions in sync between them (so one could know a given client is compatible with a given implementation of the same version).