Extend DiscoveryBase with api_factory
setting
#73
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, there's no simple way to adjust internal API client behavior while using discovery at the same time. To do that, one has to somehow override
DiscoveryBase._configure_api_client
, that is creating new API instances (e.g.BasicApi
,BatchApi
).This PR adds optional config setting -
api_factory
. If present, it's expected to be acallable
constructing new API instances. It will be used instead of default instantiation logic. These changes are not breaking the public interface ofDiscovery
classes orClient
.Why:
My primary goal was to make API exception handling more clean, because:
a) There's a bunch of generated
ApiException
classes: if I work with multiple crm objects, I have to import all those exception classes, give them aliases, and I cannot catch them with singleexcept ApiException
b) There's no way currently to specifically handle only
404
with a single row, e.g.except NotFoundException
.This syntax can be achieved though by extending
ApiClient
.