Opened 4 years ago
Last modified 4 years ago
#32764 closed New feature
pass getattr() for settings to the settings module — at Version 1
Reported by: | Mike Brancato | Owned by: | nobody |
---|---|---|---|
Component: | Core (Other) | Version: | 3.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
When the Settings class loads the global settings, it roughly does the following.
- Uses
importlib
to instantiate the settings module. - Iterates thru the upper-case attributes of the module.
- Assigns the value of the module attribute to an attribute on the Settings class instance.
setting_value = getattr(mod, setting)
This effectively makes dynamic settings impossible. There are probably many use cases for settings which change during runtime, my use-case is dynamic credentials that rotate periodically. So I've used features from PEP-562 (requires Python 3.7) to make certain attributes of a module dynamic. The only requirement really is that getattr()
be called on the module.
Is there any reason that the Settings class could not instead maintain a list of settings and use a __getattr__
method to check known settings and pass those to the module?