Initialise backend on first use instead of on import #480
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.
This seems so simple I kind of think I must be missing something, but
tox
passes on my (Linux) system.Doing complicated stuff on import is generally best avoided, because we typically assume that imports are fast and reliable. This simply defers selecting and initialising a backend to the first time any of the public API functions are called. The only possible negative impact I can think of is if the environment changes between import and first use, it may lead to using a different backend. But it's hard to come up with realistic cases where that would be a problem, and if it is, the caller can use
get_keyring()
to initialise the backend early.Closes #403.