oracle / oracle/oci-python-sdk
Enhancement: Split services into separate installable modules
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 474
- Forks
- 321
- Avg merge
- 23m
- Merged PRs (30d)
- 4
Description
I work for a company that uses this Python SDK as part of a product. The SDK works very well for us. Recently, the size of the SDK has become... not an issue, per se, but maybe "noticeable" is the right word? We only use a small part of the SDK which got me thinking about if support for each service could be selectively installed. So, for example, there could be an oci-core package that supports the Compute, Virtual Network, and Block Volume services. And maybe an oci-identity package for the Identity service. Etc. If I only need access to the Identity service, I could install only oci-identity and not have any source files related to the core services (or anything else).
I hope it won't be considered out-of-line to mention a competing cloud's SDK. The Azure Python SDK (https://github.com/Azure/azure-sdk-for-python) has implemented this kind of granular service installation (though I haven't actually used it). I could, for example, install just the azure-mgmt-compute package which would allow me to work with the compute service without installing anything else that I don't need. They appear to still use a single repository for all of the SDK components and just provide multiple packages to the Python Packaging Index. I haven't looked hard at their repository to see if there is anything special going on to support that but my guess is that they are simply using a package namespace to bring each separate package into a cohesive unit transparently to the user. I'm not at all a Python packaging expert.
I certainly don't claim that this is an easy request or that it should be started without some major design discussions. Just that I think it could be useful to your customers/users so may be worth putting on the roadmap. This also may have already been discussed. If so, I was unable to find that discussion in issues on this repository, the Cloud Customer Connect forums or the docs on readthedocs.io. I did also notice the Survey link in the docs and in this repository and that would have been my first choice for where to mention this request, but it appears that survey has been closed.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named in the issue. Start with a design discussion of the SDK's package layout and Python distribution strategy, using the Azure SDK approach mentioned as a comparison; done would be a decided, documented plan for selectively installable service packages.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system, cloud
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100